From 9d0f5e7d7effb80273db0ce638a302a3523f28ab Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 9 Jan 2023 15:30:57 +0000 Subject: [PATCH] Deployed f14289c0 with MkDocs version: 1.4.2 --- 404.html | 2 +- FAQ/index.html | 4 +-- assets/javascripts/bundle.5a2dcb6a.min.js | 29 ------------------ assets/javascripts/bundle.5a2dcb6a.min.js.map | 8 ----- assets/javascripts/bundle.ba449ae6.min.js | 29 ++++++++++++++++++ assets/javascripts/bundle.ba449ae6.min.js.map | 8 +++++ .../javascripts/extra/bundle.5f09fbc3.min.js | 18 ----------- .../extra/bundle.5f09fbc3.min.js.map | 8 ----- ...16e2a7d4.min.js => search.e5c33ebb.min.js} | 24 ++++++--------- ....min.js.map => search.e5c33ebb.min.js.map} | 8 ++--- assets/stylesheets/extra.0d2c79a8.min.css | 1 - assets/stylesheets/extra.0d2c79a8.min.css.map | 1 - assets/stylesheets/main.6b71719e.min.css | 1 + assets/stylesheets/main.6b71719e.min.css.map | 1 + assets/stylesheets/main.975780f9.min.css | 1 - assets/stylesheets/main.975780f9.min.css.map | 1 - general/awesome-lsio/index.html | 2 +- general/container-customization/index.html | 4 +-- general/container-execution/index.html | 4 +-- general/containers-101/index.html | 4 +-- general/docker-compose/index.html | 4 +-- general/fleet/index.html | 4 +-- general/running-our-containers/index.html | 4 +-- general/swag/index.html | 4 +-- .../understanding-puid-and-pgid/index.html | 4 +-- general/updating-our-containers/index.html | 4 +-- general/volumes/index.html | 4 +-- images/docker-adguardhome-sync/index.html | 4 +-- images/docker-airsonic-advanced/index.html | 4 +-- images/docker-airsonic/index.html | 4 +-- images/docker-apprise-api/index.html | 4 +-- images/docker-audacity/index.html | 4 +-- images/docker-babybuddy/index.html | 4 +-- images/docker-base-alpine-example/index.html | 2 +- images/docker-base-ubuntu-example/index.html | 2 +- .../docker-baseimage-alpine-nginx/index.html | 2 +- .../docker-baseimage-alpine-python/index.html | 2 +- images/docker-baseimage-alpine/index.html | 2 +- images/docker-baseimage-arch/index.html | 2 +- images/docker-baseimage-cloud9/index.html | 2 +- images/docker-baseimage-fedora/index.html | 2 +- images/docker-baseimage-guacgui/index.html | 4 +-- images/docker-baseimage-gui/index.html | 4 +-- images/docker-baseimage-mono/index.html | 2 +- .../docker-baseimage-rdesktop-web/index.html | 2 +- images/docker-baseimage-rdesktop/index.html | 2 +- images/docker-bazarr/index.html | 4 +-- images/docker-beets/index.html | 4 +-- images/docker-blender/index.html | 4 +-- images/docker-boinc/index.html | 4 +-- images/docker-booksonic-air/index.html | 4 +-- images/docker-booksonic/index.html | 4 +-- images/docker-bookstack/index.html | 4 +-- images/docker-budge/index.html | 4 +-- images/docker-calibre-web/index.html | 4 +-- images/docker-calibre/index.html | 4 +-- images/docker-cardigann/index.html | 4 +-- images/docker-changedetection.io/index.html | 4 +-- images/docker-chevereto/index.html | 4 +-- images/docker-ci/index.html | 4 +-- images/docker-clarkson/index.html | 4 +-- images/docker-cloud9/index.html | 4 +-- images/docker-code-server/index.html | 4 +-- images/docker-codiad/index.html | 4 +-- images/docker-codimd/index.html | 4 +-- images/docker-cops/index.html | 4 +-- images/docker-couchpotato/index.html | 4 +-- images/docker-daapd/index.html | 4 +-- images/docker-darktable/index.html | 4 +-- images/docker-davos/index.html | 4 +-- images/docker-ddclient/index.html | 4 +-- images/docker-deluge/index.html | 4 +-- images/docker-digikam/index.html | 4 +-- images/docker-dillinger/index.html | 4 +-- images/docker-diskover/index.html | 4 +-- images/docker-doc-builder/index.html | 4 +-- images/docker-docker-compose/index.html | 4 +-- images/docker-dokuwiki/index.html | 4 +-- images/docker-domoticz/index.html | 4 +-- images/docker-doplarr/index.html | 4 +-- images/docker-doublecommander/index.html | 4 +-- images/docker-duckdns/index.html | 4 +-- images/docker-duplicati/index.html | 4 +-- images/docker-emby/index.html | 4 +-- images/docker-embystat/index.html | 4 +-- images/docker-emulatorjs/index.html | 4 +-- images/docker-endlessh/index.html | 4 +-- images/docker-fail2ban/index.html | 4 +-- images/docker-feed2toot/index.html | 4 +-- images/docker-ffmpeg/index.html | 4 +-- images/docker-filezilla/index.html | 4 +-- images/docker-firefox/index.html | 4 +-- images/docker-fleet/index.html | 4 +-- images/docker-foldingathome/index.html | 4 +-- images/docker-freshrss/index.html | 4 +-- images/docker-gazee/index.html | 4 +-- images/docker-gmail-order-bot/index.html | 4 +-- images/docker-grav/index.html | 4 +-- images/docker-grocy/index.html | 4 +-- images/docker-guacd/index.html | 4 +-- images/docker-habridge/index.html | 4 +-- images/docker-headphones/index.html | 4 +-- images/docker-healthchecks/index.html | 4 +-- images/docker-hedgedoc/index.html | 4 +-- images/docker-heimdall/index.html | 4 +-- images/docker-homeassistant/index.html | 4 +-- images/docker-htpcmanager/index.html | 4 +-- images/docker-hydra/index.html | 4 +-- images/docker-hydra2/index.html | 4 +-- images/docker-ipfs/index.html | 4 +-- images/docker-jackett/index.html | 4 +-- images/docker-jellyfin/index.html | 4 +-- images/docker-jenkins-builder/index.html | 4 +-- images/docker-kanzi/index.html | 4 +-- images/docker-kasm/index.html | 4 +-- images/docker-kdenlive/index.html | 4 +-- images/docker-lazylibrarian/index.html | 4 +-- images/docker-ldap-auth/index.html | 4 +-- images/docker-letsencrypt/index.html | 4 +-- images/docker-libreoffice/index.html | 4 +-- images/docker-libresonic/index.html | 4 +-- images/docker-librespeed/index.html | 4 +-- images/docker-lidarr/index.html | 4 +-- images/docker-limnoria/index.html | 4 +-- images/docker-lychee/index.html | 4 +-- images/docker-mariadb/index.html | 4 +-- images/docker-mastodon/index.html | 4 +-- images/docker-medusa/index.html | 4 +-- images/docker-minetest/index.html | 4 +-- images/docker-minisatip/index.html | 4 +-- images/docker-mstream/index.html | 4 +-- images/docker-musicbrainz/index.html | 4 +-- images/docker-muximux/index.html | 4 +-- images/docker-mylar/index.html | 4 +-- images/docker-mylar3/index.html | 4 +-- images/docker-mysql-workbench/index.html | 4 +-- images/docker-nano-discord-bot/index.html | 4 +-- images/docker-nano-wallet/index.html | 4 +-- images/docker-nano/index.html | 4 +-- images/docker-netbootxyz/index.html | 4 +-- images/docker-netbox/index.html | 4 +-- images/docker-nextcloud/index.html | 4 +-- images/docker-nginx/index.html | 4 +-- images/docker-ngircd/index.html | 4 +-- images/docker-nntp2nntp/index.html | 4 +-- images/docker-nzbget/index.html | 4 +-- images/docker-nzbhydra2/index.html | 4 +-- images/docker-ombi/index.html | 4 +-- images/docker-openssh-server/index.html | 4 +-- images/docker-openvpn-as/index.html | 4 +-- images/docker-openvscode-server/index.html | 4 +-- images/docker-organizr/index.html | 4 +-- images/docker-oscam/index.html | 4 +-- images/docker-overseerr/index.html | 4 +-- images/docker-paperless-ng/index.html | 4 +-- images/docker-paperless-ngx/index.html | 4 +-- images/docker-papermerge/index.html | 4 +-- images/docker-photoshow/index.html | 4 +-- images/docker-phpmyadmin/index.html | 4 +-- images/docker-pidgin/index.html | 4 +-- images/docker-piwigo/index.html | 4 +-- images/docker-pixapop/index.html | 4 +-- images/docker-plex-meta-manager/index.html | 4 +-- images/docker-plex/index.html | 4 +-- images/docker-projectsend/index.html | 4 +-- images/docker-prowlarr/index.html | 4 +-- images/docker-pwndrop/index.html | 4 +-- images/docker-pydio-cells/index.html | 4 +-- images/docker-pydio/index.html | 4 +-- images/docker-pyload-ng/index.html | 4 +-- images/docker-pyload/index.html | 4 +-- images/docker-pylon/index.html | 4 +-- images/docker-qbittorrent/index.html | 4 +-- images/docker-qdirstat/index.html | 4 +-- images/docker-quassel-core/index.html | 4 +-- images/docker-quassel-web/index.html | 4 +-- images/docker-radarr/index.html | 4 +-- images/docker-raneto/index.html | 4 +-- images/docker-rdesktop/index.html | 4 +-- images/docker-readarr/index.html | 4 +-- images/docker-readme-sync/index.html | 4 +-- images/docker-remmina/index.html | 4 +-- images/docker-requestrr/index.html | 4 +-- images/docker-resilio-sync/index.html | 4 +-- images/docker-rsnapshot/index.html | 4 +-- images/docker-rutorrent/index.html | 4 +-- images/docker-sabnzbd/index.html | 4 +-- images/docker-scrutiny/index.html | 4 +-- images/docker-shout-irc/index.html | 4 +-- images/docker-sickchill/index.html | 4 +-- images/docker-sickgear/index.html | 4 +-- images/docker-sickrage/index.html | 4 +-- images/docker-smokeping/index.html | 4 +-- images/docker-snapdrop/index.html | 4 +-- images/docker-snipe-it/index.html | 4 +-- images/docker-sonarr/index.html | 4 +-- images/docker-sqlitebrowser/index.html | 4 +-- images/docker-swag/index.html | 4 +-- images/docker-synclounge/index.html | 4 +-- images/docker-syncthing/index.html | 4 +-- images/docker-syslog-ng/index.html | 4 +-- images/docker-taisun/index.html | 4 +-- images/docker-tautulli/index.html | 4 +-- images/docker-tester/index.html | 4 +-- images/docker-thelounge/index.html | 4 +-- images/docker-transmission/index.html | 4 +-- images/docker-tvheadend/index.html | 4 +-- images/docker-ubooquity/index.html | 4 +-- images/docker-unifi-controller/index.html | 4 +-- images/docker-webgrabplus/index.html | 4 +-- images/docker-webtop/index.html | 4 +-- images/docker-wikijs/index.html | 4 +-- images/docker-wireguard/index.html | 4 +-- images/docker-wireshark/index.html | 4 +-- images/docker-xbackbone/index.html | 4 +-- images/docker-yq/index.html | 4 +-- images/docker-znc/index.html | 4 +-- images/index.html | 2 +- index.html | 2 +- misc/finances/index.html | 2 +- requirements.txt | 2 +- search/search_index.json | 2 +- sitemap.xml.gz | Bin 1548 -> 1548 bytes 223 files changed, 450 insertions(+), 484 deletions(-) delete mode 100644 assets/javascripts/bundle.5a2dcb6a.min.js delete mode 100644 assets/javascripts/bundle.5a2dcb6a.min.js.map create mode 100644 assets/javascripts/bundle.ba449ae6.min.js create mode 100644 assets/javascripts/bundle.ba449ae6.min.js.map delete mode 100644 assets/javascripts/extra/bundle.5f09fbc3.min.js delete mode 100644 assets/javascripts/extra/bundle.5f09fbc3.min.js.map rename assets/javascripts/workers/{search.16e2a7d4.min.js => search.e5c33ebb.min.js} (57%) rename assets/javascripts/workers/{search.16e2a7d4.min.js.map => search.e5c33ebb.min.js.map} (53%) delete mode 100644 assets/stylesheets/extra.0d2c79a8.min.css delete mode 100644 assets/stylesheets/extra.0d2c79a8.min.css.map create mode 100644 assets/stylesheets/main.6b71719e.min.css create mode 100644 assets/stylesheets/main.6b71719e.min.css.map delete mode 100644 assets/stylesheets/main.975780f9.min.css delete mode 100644 assets/stylesheets/main.975780f9.min.css.map diff --git a/404.html b/404.html index 3cc5e2e610..3a0efc2ec2 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ - LinuxServer.io

404 - Not found

\ No newline at end of file + LinuxServer.io

404 - Not found

\ No newline at end of file diff --git a/FAQ/index.html b/FAQ/index.html index bab60a0042..352423446d 100644 --- a/FAQ/index.html +++ b/FAQ/index.html @@ -1,4 +1,4 @@ - FAQ - LinuxServer.io
Skip to content

FAQ

Here will some Frequently Asked Questions reside

My host is incompatible with images based on Ubuntu Jammy

Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.

\ No newline at end of file diff --git a/assets/javascripts/bundle.5a2dcb6a.min.js b/assets/javascripts/bundle.5a2dcb6a.min.js deleted file mode 100644 index 6f9720b673..0000000000 --- a/assets/javascripts/bundle.5a2dcb6a.min.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict";(()=>{var aa=Object.create;var wr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ca=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,fa=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var cn=(e,t,r)=>t in e?wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&cn(e,r,t[r]);if(kt)for(var r of kt(t))fn.call(t,r)&&cn(e,r,t[r]);return e};var un=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&fn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ua=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ca(t))!Er.call(e,o)&&o!==r&&wr(e,o,{get:()=>t[o],enumerable:!(n=sa(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?aa(fa(e)):{},ua(t||!e||!e.__esModule?wr(r,"default",{value:e,enumerable:!0}):r,e));var ln=yt((Sr,pn)=>{(function(e,t){typeof Sr=="object"&&typeof pn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Sr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(_){return!!(_&&_!==document&&_.nodeName!=="HTML"&&_.nodeName!=="BODY"&&"classList"in _&&"contains"in _.classList)}function c(_){var We=_.type,Fe=_.tagName;return!!(Fe==="INPUT"&&s[We]&&!_.readOnly||Fe==="TEXTAREA"&&!_.readOnly||_.isContentEditable)}function f(_){_.classList.contains("focus-visible")||(_.classList.add("focus-visible"),_.setAttribute("data-focus-visible-added",""))}function u(_){!_.hasAttribute("data-focus-visible-added")||(_.classList.remove("focus-visible"),_.removeAttribute("data-focus-visible-added"))}function p(_){_.metaKey||_.altKey||_.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function l(_){n=!1}function d(_){!a(_.target)||(n||c(_.target))&&f(_.target)}function h(_){!a(_.target)||(_.target.classList.contains("focus-visible")||_.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(_.target))}function b(_){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(_){_.target.nodeName&&_.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var mn=yt(Or=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(_){throw new Error("URL unable to set base "+f+" due to "+_)}}var l=u.createElement("a");l.href=c,p&&(u.body.appendChild(l),l.href=l.href);var d=u.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(_){var We=h[_];h[_]=function(){We.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or)});var Pn=yt((Ks,$t)=>{/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var dn,hn,bn,vn,gn,yn,xn,wn,En,Ht,_r,Sn,On,_n,rt,Tn,Mn,Ln,An,Cn,Rn,kn,Hn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof $t=="object"&&typeof $t.exports=="object"?e(r(t,r($t.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,s){return n[i]=o?o(i,s):s}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};dn=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},hn=Object.assign||function(n){for(var o,i=1,s=arguments.length;i=0;u--)(f=n[u])&&(c=(a<3?f(c):a>3?f(o,i,c):f(o,i))||c);return a>3&&c&&Object.defineProperty(o,i,c),c},gn=function(n,o){return function(i,s){o(i,s,n)}},yn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},xn=function(n,o,i,s){function a(c){return c instanceof i?c:new i(function(f){f(c)})}return new(i||(i=Promise))(function(c,f){function u(d){try{l(s.next(d))}catch(h){f(h)}}function p(d){try{l(s.throw(d))}catch(h){f(h)}}function l(d){d.done?c(d.value):a(d.value).then(u,p)}l((s=s.apply(n,o||[])).next())})},wn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},s,a,c,f;return f={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function u(l){return function(d){return p([l,d])}}function p(l){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,a&&(c=l[0]&2?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,a=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},_r=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var s=i.call(n),a,c=[],f;try{for(;(o===void 0||o-- >0)&&!(a=s.next()).done;)c.push(a.value)}catch(u){f={error:u}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(f)throw f.error}}return c},Sn=function(){for(var n=[],o=0;o1||u(b,U)})})}function u(b,U){try{p(s[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){u("next",b)}function d(b){u("throw",b)}function h(b,U){b(U),c.shift(),c.length&&u(c[0][0],c[0][1])}},Mn=function(n){var o,i;return o={},s("next"),s("throw",function(a){throw a}),s("return"),o[Symbol.iterator]=function(){return this},o;function s(a,c){o[a]=n[a]?function(f){return(i=!i)?{value:rt(n[a](f)),done:a==="return"}:c?c(f):f}:c}},Ln=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i);function s(c){i[c]=n[c]&&function(f){return new Promise(function(u,p){f=n[c](f),a(u,p,f.done,f.value)})}}function a(c,f,u,p){Promise.resolve(p).then(function(l){c({value:l,done:u})},f)}},An=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Cn=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},Rn=function(n){return n&&n.__esModule?n:{default:n}},kn=function(n,o,i,s){if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?s:i==="a"?s.call(n):s?s.value:o.get(n)},Hn=function(n,o,i,s,a){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?a.call(n,i):a?a.value=i:o.set(n,i),i},e("__extends",dn),e("__assign",hn),e("__rest",bn),e("__decorate",vn),e("__param",gn),e("__metadata",yn),e("__awaiter",xn),e("__generator",wn),e("__exportStar",En),e("__createBinding",Pt),e("__values",Ht),e("__read",_r),e("__spread",Sn),e("__spreadArrays",On),e("__spreadArray",_n),e("__await",rt),e("__asyncGenerator",Tn),e("__asyncDelegator",Mn),e("__asyncValues",Ln),e("__makeTemplateObject",An),e("__importStar",Cn),e("__importDefault",Rn),e("__classPrivateFieldGet",kn),e("__classPrivateFieldSet",Hn)})});var Br=yt((At,Yr)=>{/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ia}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function l(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var O=p()(T);return l("cut"),O},h=d;function b(j){var T=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(k,"px"),O.setAttribute("readonly",""),O.value=j,O}var U=function(T,O){var k=b(T);O.container.appendChild(k);var $=p()(k);return l("copy"),k.remove(),$},G=function(T){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=U(T,O):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=U(T.value,O):(k=p()(T),l("copy")),k},W=G;function _(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_=function(O){return typeof O}:_=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},_(j)}var We=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=T.action,k=O===void 0?"copy":O,$=T.container,q=T.target,Te=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&_(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Te)return W(Te,{container:$});if(q)return k==="cut"?h(q):W(q,{container:$})},Fe=We;function Pe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(j)}function Ji(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function sn(j,T){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof $.action=="function"?$.action:this.defaultAction,this.target=typeof $.target=="function"?$.target:this.defaultTarget,this.text=typeof $.text=="function"?$.text:this.defaultText,this.container=Pe($.container)==="object"?$.container:document.body}},{key:"listenClick",value:function($){var q=this;this.listener=f()($,"click",function(Te){return q.onClick(Te)})}},{key:"onClick",value:function($){var q=$.delegateTarget||$.currentTarget,Te=this.action(q)||"copy",Rt=Fe({action:Te,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Te,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function($){return xr("action",$)}},{key:"defaultTarget",value:function($){var q=xr("target",$);if(q)return document.querySelector(q)}},{key:"defaultText",value:function($){return xr("text",$)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function($){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W($,q)}},{key:"cut",value:function($){return h($)}},{key:"isSupported",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof $=="string"?[$]:$,Te=!!document.queryCommandSupported;return q.forEach(function(Rt){Te=Te&&!!document.queryCommandSupported(Rt)}),Te}}]),O}(a()),ia=oa},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,l,d,h){var b=f.apply(this,arguments);return u.addEventListener(l,b,h),{destroy:function(){u.removeEventListener(l,b,h)}}}function c(u,p,l,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof l=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(b){return a(b,p,l,d,h)}))}function f(u,p,l,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(l))return f(l,d,h);if(s.nodeList(l))return u(l,d,h);if(s.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function u(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return a(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */var Ms=/["'&<>]/;Si.exports=Ls;function Ls(e){var t=""+e,r=Ms.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new $e(function(){n.currentObservers=null,Ue(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new Qn(r,n)},t}(F);var Qn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var wt={now:function(){return(wt.delegate||Date).now()},delegate:void 0};var Et=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=wt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(zt);var Gn=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Nt);var xe=new Gn(Bn);var R=new F(function(e){return e.complete()});function qt(e){return e&&L(e.schedule)}function Hr(e){return e[e.length-1]}function Ve(e){return L(Hr(e))?e.pop():void 0}function Ee(e){return qt(Hr(e))?e.pop():void 0}function Kt(e,t){return typeof Hr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Qt(e){return L(e==null?void 0:e.then)}function Yt(e){return L(e[it])}function Bt(e){return Symbol.asyncIterator&&L(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ya(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=ya();function Xt(e){return L(e==null?void 0:e[Jt])}function Zt(e){return jn(this,arguments,function(){var r,n,o,i;return It(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,jt(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,jt(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return L(e==null?void 0:e.getReader)}function z(e){if(e instanceof F)return e;if(e!=null){if(Yt(e))return xa(e);if(st(e))return wa(e);if(Qt(e))return Ea(e);if(Bt(e))return Jn(e);if(Xt(e))return Sa(e);if(er(e))return Oa(e)}throw Gt(e)}function xa(e){return new F(function(t){var r=e[it]();if(L(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function wa(e){return new F(function(t){for(var r=0;r=2,!0))}function ie(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),u=l=void 0,h=b=!1},W=function(){var _=u;G(),_==null||_.unsubscribe()};return g(function(_,We){d++,!b&&!h&&U();var Fe=l=l!=null?l:r();We.add(function(){d--,d===0&&!b&&!h&&(p=Dr(W,c))}),Fe.subscribe(We),!u&&d>0&&(u=new Ge({next:function(Pe){return Fe.next(Pe)},error:function(Pe){b=!0,U(),p=Dr(G,o,Pe),Fe.error(Pe)},complete:function(){h=!0,U(),p=Dr(G,s),Fe.complete()}}),z(_).subscribe(u))})(f)}}function Dr(e,t){for(var r=[],n=2;ne.next(document)),e}function Q(e,t=document){return Array.from(t.querySelectorAll(e))}function K(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ie(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return A(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Re(1),m(()=>{let t=Ie();return typeof t!="undefined"?e.contains(t):!1}),N(e===Ie()),B())}function qe(e){return{x:e.offsetLeft,y:e.offsetTop}}function yo(e){return A(v(window,"load"),v(window,"resize")).pipe(Ae(0,xe),m(()=>qe(e)),N(qe(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return A(v(e,"scroll"),v(window,"resize")).pipe(Ae(0,xe),m(()=>or(e)),N(or(e)))}var wo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!qr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ka?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!qr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=qa.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Eo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Oo=typeof WeakMap!="undefined"?new WeakMap:new wo,_o=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Qa.getInstance(),n=new ns(t,r,this);Oo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){_o.prototype[e]=function(){var t;return(t=Oo.get(this))[e].apply(t,arguments)}});var os=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:_o}(),To=os;var Mo=new E,is=P(()=>I(new To(e=>{for(let t of e)Mo.next(t)}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ve(e){return is.pipe(w(t=>t.observe(e)),S(t=>Mo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(()=>he(e)))),N(he(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Lo=new E,as=P(()=>I(new IntersectionObserver(e=>{for(let t of e)Lo.next(t)},{threshold:0}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function fr(e){return as.pipe(w(t=>t.observe(e)),S(t=>Lo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Ao(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=he(e),o=mt(e);return r>=o.height-n.height-t}),B())}var ur={drawer:K("[data-md-toggle=drawer]"),search:K("[data-md-toggle=search]")};function Co(e){return ur[e].checked}function Ke(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),N(t.checked))}function ss(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ro(){return v(window,"keydown").pipe(x(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Co("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),x(({mode:e,type:t})=>{if(e==="global"){let r=Ie();if(typeof r!="undefined")return!ss(r,t)}return!0}),ie())}function Oe(){return new URL(location.href)}function pr(e){location.href=e.href}function ko(){return new E}function Ho(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ho(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ho(n,o);return n}function Po(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function lr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function $o(){return location.hash.substring(1)}function Io(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function cs(){return v(window,"hashchange").pipe(m($o),N($o()),x(e=>e.length>0),X(1))}function jo(){return cs().pipe(m(e=>pe(`[id="${e}"]`)),x(e=>typeof e!="undefined"))}function Kr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function Fo(){let e=matchMedia("print");return A(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(N(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():R))}function mr(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(ce(()=>R),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):I(r)))}function je(e,t){return mr(e,t).pipe(S(r=>r.json()),X(1))}function Uo(e,t){let r=new DOMParser;return mr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Do(e){let t=M("script",{src:e});return P(()=>(document.head.appendChild(t),A(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),C(()=>document.head.removeChild(t)),oe(1))))}function Wo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Vo(){return A(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Wo),N(Wo()))}function zo(){return{width:innerWidth,height:innerHeight}}function No(){return v(window,"resize",{passive:!0}).pipe(m(zo),N(zo()))}function qo(){return Y([Vo(),No()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function dr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>qe(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}function Ko(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),w(n=>e.postMessage(n)),S(()=>r),ie())}var fs=K("#__config"),ht=JSON.parse(fs.textContent);ht.base=`${new URL(ht.base,Oe())}`;function le(){return ht}function Z(e){return ht.features.includes(e)}function re(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function _e(e,t=document){return K(`[data-md-component=${e}]`,t)}function te(e,t=document){return Q(`[data-md-component=${e}]`,t)}function us(e){let t=K(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>K(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Qo(e){return!Z("announce.dismiss")||!e.childElementCount?R:P(()=>{let t=new E;return t.pipe(N({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),us(e).pipe(w(r=>t.next(r)),C(()=>t.complete()),m(r=>H({ref:e},r)))})}function ps(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Yo(e,t){let r=new E;return r.subscribe(({hidden:n})=>{e.hidden=n}),ps(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}var ii=Ye(Br());function Gr(e){return M("div",{class:"md-tooltip",id:e},M("div",{class:"md-tooltip__inner md-typeset"}))}function Bo(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("a",{href:r,class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}else return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("span",{class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}function Go(e){return M("button",{class:"md-clipboard md-icon",title:re("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Jr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,c)=>[...a,M("del",null,c)," "],[]).slice(0,-1),i=new URL(e.location);Z("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[c])=>`${a} ${c}`.trim(),""));let{tags:s}=le();return M("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},M("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&M("div",{class:"md-search-result__icon md-icon"}),M("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&M("p",{class:"md-search-result__teaser"},Po(e.text,320)),e.tags&&M("div",{class:"md-typeset"},e.tags.map(a=>{let c=a.replace(/<[^>]+>/g,""),f=s?c in s?`md-tag-icon md-tag-icon--${s[c]}`:"md-tag-icon":"";return M("span",{class:`md-tag ${f}`},a)})),n>0&&o.length>0&&M("p",{class:"md-search-result__terms"},re("search.result.term.missing"),": ",...o)))}function Jo(e){let t=e[0].score,r=[...e],n=r.findIndex(f=>!f.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(f=>f.scoreJr(f,1)),...a.length?[M("details",{class:"md-search-result__more"},M("summary",{tabIndex:-1},a.length>0&&a.length===1?re("search.result.more.one"):re("search.result.more.other",a.length)),...a.map(f=>Jr(f,1)))]:[]];return M("li",{class:"md-search-result__item"},c)}function Xo(e){return M("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>M("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?lr(r):r)))}function Xr(e){let t=`tabbed-control tabbed-control--${e}`;return M("div",{class:t,hidden:!0},M("button",{class:"tabbed-button",tabIndex:-1}))}function Zo(e){return M("div",{class:"md-typeset__scrollwrap"},M("div",{class:"md-typeset__table"},e))}function ls(e){let t=le(),r=new URL(`../${e.version}/`,t.base);return M("li",{class:"md-version__item"},M("a",{href:`${r}`,class:"md-version__link"},e.title))}function ei(e,t){return M("div",{class:"md-version"},M("button",{class:"md-version__current","aria-label":re("select.version.title")},t.title),M("ul",{class:"md-version__list"},e.map(ls)))}function ms(e,t){let r=P(()=>Y([yo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:s,height:a}=he(e);return{x:n-i.x+s/2,y:o-i.y+a/2}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),oe(+!n||1/0))))}function ti(e,t,{target$:r}){let[n,o]=Array.from(e.children);return P(()=>{let i=new E,s=i.pipe(de(1));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),fr(e).pipe(ee(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),A(i.pipe(x(({active:a})=>a)),i.pipe(Re(250),x(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Ae(16,xe)).subscribe(({active:a})=>{n.classList.toggle("md-tooltip--active",a)}),i.pipe(zr(125,xe),x(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),v(o,"click").pipe(ee(s),x(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>a.preventDefault()),v(o,"mousedown").pipe(ee(s),ae(i)).subscribe(([a,{active:c}])=>{var f;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(f=Ie())==null||f.blur()}}),r.pipe(ee(s),x(a=>a===n),ke(125)).subscribe(()=>e.focus()),ms(e,t).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))})}function ds(e){let t=[];for(let r of Q(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let f=i.splitText(s.index);i=f.splitText(a.length),t.push(f)}else{i.textContent=a,t.push(i);break}}}}return t}function ri(e,t){t.append(...Array.from(e.childNodes))}function ni(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,s=new Map;for(let a of ds(t)){let[,c]=a.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${c})`,e)&&(s.set(c,Bo(c,i)),a.replaceWith(s.get(c)))}return s.size===0?R:P(()=>{let a=new E,c=[];for(let[f,u]of s)c.push([K(".md-typeset",u),K(`li:nth-child(${f})`,e)]);return n.pipe(ee(a.pipe(de(1)))).subscribe(f=>{e.hidden=!f;for(let[u,p]of c)f?ri(u,p):ri(p,u)}),A(...[...s].map(([,f])=>ti(f,t,{target$:r}))).pipe(C(()=>a.complete()),ie())})}var hs=0;function ai(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return ai(t)}}function oi(e){return ve(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function si(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new E;if(o.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ii.default.isSupported()){let s=e.closest("pre");s.id=`__code_${++hs}`,s.insertBefore(Go(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=ai(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let a=ni(s,e,t);return oi(e).pipe(w(c=>o.next(c)),C(()=>o.complete()),m(c=>H({ref:e},c)),et(ve(i).pipe(m(({width:c,height:f})=>c&&f),B(),S(c=>c?a:R))))}}return oi(e).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))});return Z("content.lazy")?fr(e).pipe(x(o=>o),oe(1),S(()=>n)):n}var ci=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none;font-family:var(--md-mermaid-font-family)!important}.noteText>tspan{fill:#000}#arrowhead path{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Zr,vs=0;function gs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Do("https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js"):I(void 0)}function fi(e){return e.classList.remove("mermaid"),Zr||(Zr=gs().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ci,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),X(1))),Zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${vs++}`,r=M("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Zr.pipe(m(()=>({ref:e})))}function ys(e,{target$:t,print$:r}){let n=!0;return A(t.pipe(m(o=>o.closest("details:not([open])")),x(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(x(o=>o||!n),w(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ui(e,t){return P(()=>{let r=new E;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),ys(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}var pi=M("table");function li(e){return e.replaceWith(pi),pi.replaceWith(Zo(e)),I({ref:e})}function xs(e){let t=Q(":scope > input",e),r=t.find(n=>n.checked)||t[0];return A(...t.map(n=>v(n,"change").pipe(m(()=>K(`label[for="${n.id}"]`))))).pipe(N(K(`label[for="${r.id}"]`)),m(n=>({active:n})))}function mi(e,{viewport$:t}){let r=Xr("prev");e.append(r);let n=Xr("next");e.append(n);let o=K(".tabbed-labels",e);return P(()=>{let i=new E,s=i.pipe(de(1));return Y([i,ve(e)]).pipe(Ae(1,xe),ee(s)).subscribe({next([{active:a},c]){let f=qe(a),{width:u}=he(a);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let p=or(o);(f.xp.x+c.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(o),ve(o)]).pipe(ee(s)).subscribe(([a,c])=>{let f=mt(o);r.hidden=a.x<16,n.hidden=a.x>f.width-c.width-16}),A(v(r,"click").pipe(m(()=>-1)),v(n,"click").pipe(m(()=>1))).pipe(ee(s)).subscribe(a=>{let{width:c}=he(o);o.scrollBy({left:c*a,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe(He(1),ae(t)).subscribe(([{active:a},{offset:c}])=>{let f=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let u=e.offsetTop-c.y;for(let l of Q("[data-tabs]"))for(let d of Q(":scope > input",l)){let h=K(`label[for="${d.id}"]`);if(h!==a&&h.innerText.trim()===f){h.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-u});let p=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...p])])}}),xs(e).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}).pipe(Je(fe))}function di(e,{viewport$:t,target$:r,print$:n}){return A(...Q("pre:not(.mermaid) > code",e).map(o=>si(o,{target$:r,print$:n})),...Q("pre.mermaid",e).map(o=>fi(o)),...Q("table:not([class])",e).map(o=>li(o)),...Q("details",e).map(o=>ui(o,{target$:r,print$:n})),...Q("[data-tabs]",e).map(o=>mi(o,{viewport$:t})))}function ws(e,{alert$:t}){return t.pipe(S(r=>A(I(!0),I(!1).pipe(ke(2e3))).pipe(m(n=>({message:r,active:n})))))}function hi(e,t){let r=K(".md-typeset",e);return P(()=>{let n=new E;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ws(e,t).pipe(w(o=>n.next(o)),C(()=>n.complete()),m(o=>H({ref:e},o)))})}function Es({viewport$:e}){if(!Z("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Ce(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),B()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),B(),S(o=>o?r:I(!1)),N(!1))}function bi(e,t){return P(()=>Y([ve(e),Es(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),B((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function vi(e,{header$:t,main$:r}){return P(()=>{let n=new E,o=n.pipe(de(1));return n.pipe(J("active"),Ze(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(n),t.pipe(ee(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return dr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=he(e);return{active:n>=o}}),J("active"))}function gi(e,t){return P(()=>{let r=new E;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?R:Ss(n,t).pipe(w(o=>r.next(o)),C(()=>r.complete()),m(o=>H({ref:e},o)))})}function yi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),B()),o=n.pipe(S(()=>ve(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:f}}])=>(f=Math.max(0,f-Math.max(0,s-c,i)-Math.max(0,f+c-a)),{offset:s-i,height:f,active:s-i<=c})),B((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Os(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return I(...e).pipe(se(r=>v(r,"change").pipe(m(()=>r))),N(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function xi(e){return P(()=>{let t=new E;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=Q("input",e);return Os(r).pipe(w(n=>t.next(n)),C(()=>t.complete()),m(n=>H({ref:e},n)))})}var en=Ye(Br());function _s(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function wi({alert$:e}){en.default.isSupported()&&new F(t=>{new en.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||_s(K(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>re("clipboard.copied"))).subscribe(e)}function Ts(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function hr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return I(t);{let r=le();return Uo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Ts(Q("loc",n).map(o=>o.textContent))),ce(()=>R),De([]),w(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Ei({document$:e,location$:t,viewport$:r}){let n=le();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=hr().pipe(m(f=>f.map(u=>`${new URL(u,n.base)}`)),S(f=>v(document.body,"click").pipe(x(u=>!u.metaKey&&!u.ctrlKey),S(u=>{if(u.target instanceof Element){let p=u.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&f.includes(l.toString()))return u.preventDefault(),I({url:new URL(p.href)})}}return Se}))),ie()),s=v(window,"popstate").pipe(x(f=>f.state!==null),m(f=>({url:new URL(location.href),offset:f.state})),ie());A(i,s).pipe(B((f,u)=>f.url.href===u.url.href),m(({url:f})=>f)).subscribe(t);let a=t.pipe(J("pathname"),S(f=>mr(f.href).pipe(ce(()=>(pr(f),Se)))),ie());i.pipe(ut(a)).subscribe(({url:f})=>{history.pushState({},"",`${f}`)});let c=new DOMParser;a.pipe(S(f=>f.text()),m(f=>c.parseFromString(f,"text/html"))).subscribe(e),e.pipe(He(1)).subscribe(f=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(u),l=pe(u,f);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(He(1),m(()=>_e("container")),S(f=>Q("script",f)),Ir(f=>{let u=M("script");if(f.src){for(let p of f.getAttributeNames())u.setAttribute(p,f.getAttribute(p));return f.replaceWith(u),new F(p=>{u.onload=()=>p.complete()})}else return u.textContent=f.textContent,f.replaceWith(u),R})).subscribe(),A(i,s).pipe(ut(e)).subscribe(({url:f,offset:u})=>{f.hash&&!u?Io(f.hash):window.scrollTo(0,(u==null?void 0:u.y)||0)}),r.pipe(Mt(i),Re(250),J("offset")).subscribe(({offset:f})=>{history.replaceState(f,"")}),A(i,s).pipe(Ce(2,1),x(([f,u])=>f.url.pathname===u.url.pathname),m(([,f])=>f)).subscribe(({offset:f})=>{window.scrollTo(0,(f==null?void 0:f.y)||0)})}var As=Ye(tn());var Oi=Ye(tn());function rn(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,s)=>`${i}${s}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(t?(0,Oi.default)(s):s).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function _i(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Ti(e){return e.type===2}function vt(e){return e.type===3}function Rs({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[re("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=re("search.config.separator"));let n={pipeline:re("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:Z("search.suggest")};return{config:e,docs:t,options:n}}function Mi(e,t){let r=le(),n=new Worker(e),o=new E,i=Ko(n,{tx$:o}).pipe(m(s=>{if(vt(s))for(let a of s.data.items)for(let c of a)c.location=`${new URL(c.location,r.base)}`;return s}),ie());return ue(t).pipe(m(s=>({type:0,data:Rs(s)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Li({document$:e}){let t=le(),r=je(new URL("../versions.json",t.base)).pipe(ce(()=>R)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:s,aliases:a})=>s===i||a.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(x(i=>!i.metaKey&&!i.ctrlKey),ae(n),S(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&o.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&o.get(c)===s?R:(i.preventDefault(),I(c))}}return R}),S(i=>{let{version:s}=o.get(i);return hr(new URL(i)).pipe(m(a=>{let f=Oe().href.replace(t.base,"");return a.includes(f.split("#")[0])?new URL(`../${s}/${f}`,t.base):new URL(i)}))})))).subscribe(o=>pr(o)),Y([r,n]).subscribe(([o,i])=>{K(".md-header__topic").appendChild(ei(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){let a=((s=t.version)==null?void 0:s.default)||"latest";i=!o.aliases.includes(a),__md_set("__outdated",i,sessionStorage)}if(i)for(let a of te("outdated"))a.hidden=!1})}function ks(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||_i,{searchParams:n}=Oe();n.has("q")&&Ke("search",!0);let o=t.pipe(x(bt),oe(1),m(()=>n.get("q")||""));dt("search").pipe(x(a=>!a),oe(1)).subscribe(()=>{let a=new URL(location.href);a.searchParams.delete("q"),history.replaceState({},"",`${a}`)}),o.subscribe(a=>{a&&(e.value=a,e.focus())});let i=nr(e),s=A(v(e,"keyup"),v(e,"focus").pipe(ke(1)),o).pipe(m(()=>r(e.value)),N(""),B());return Y([s,i]).pipe(m(([a,c])=>({value:a,focus:c})),X(1))}function Ai(e,{tx$:t,rx$:r}){let n=new E,o=n.pipe(de(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(Ke("search",i),e.placeholder=""):e.placeholder=re("search.placeholder")}),v(e.form,"reset").pipe(ee(o)).subscribe(()=>e.focus()),ks(e,{tx$:t,rx$:r}).pipe(w(i=>n.next(i)),C(()=>n.complete()),m(i=>H({ref:e},i)),ie())}function Ci(e,{rx$:t},{query$:r}){let n=new E,o=Ao(e.parentElement).pipe(x(Boolean)),i=K(":scope > :first-child",e),s=K(":scope > :last-child",e),a=t.pipe(x(bt),oe(1));return n.pipe(ae(r),Mt(a)).subscribe(([{items:f},{value:u}])=>{if(u)switch(f.length){case 0:i.textContent=re("search.result.none");break;case 1:i.textContent=re("search.result.one");break;default:i.textContent=re("search.result.other",lr(f.length))}else i.textContent=re("search.result.placeholder")}),n.pipe(w(()=>s.innerHTML=""),S(({items:f})=>A(I(...f.slice(0,10)),I(...f.slice(10)).pipe(Ce(4),Nr(o),S(([u])=>u))))).subscribe(f=>s.appendChild(Jo(f))),t.pipe(x(vt),m(({data:f})=>f)).pipe(w(f=>n.next(f)),C(()=>n.complete()),m(f=>H({ref:e},f)))}function Hs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Oe();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ri(e,t){let r=new E;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Hs(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}function ki(e,{rx$:t},{keyboard$:r}){let n=new E,o=_e("search-query"),i=A(v(o,"keydown"),v(o,"focus")).pipe(Le(fe),m(()=>o.value),B());return n.pipe(Ze(i),m(([{suggestions:a},c])=>{let f=c.split(/([\s-]+)/);if((a==null?void 0:a.length)&&f[f.length-1]){let u=a[a.length-1];u.startsWith(f[f.length-1])&&(f[f.length-1]=u)}else f.length=0;return f})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(x(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(x(vt),m(({data:a})=>a)).pipe(w(a=>n.next(a)),C(()=>n.complete()),m(()=>({ref:e})))}function Hi(e,{index$:t,keyboard$:r}){let n=le();try{let o=(__search==null?void 0:__search.worker)||n.search,i=Mi(o,t),s=_e("search-query",e),a=_e("search-result",e),{tx$:c,rx$:f}=i;c.pipe(x(Ti),ut(f.pipe(x(bt))),oe(1)).subscribe(c.next.bind(c)),r.pipe(x(({mode:l})=>l==="search")).subscribe(l=>{let d=Ie();switch(l.type){case"Enter":if(d===s){let h=new Map;for(let b of Q(":first-child [href]",a)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":Ke("search",!1),s.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")s.focus();else{let h=[s,...Q(":not(details) > [href], summary, details[open] [href]",a)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:s!==Ie()&&s.focus()}}),r.pipe(x(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":s.focus(),s.select(),l.claim();break}});let u=Ai(s,i),p=Ci(a,i,{query$:u});return A(u,p).pipe(et(...te("search-share",e).map(l=>Ri(l,{query$:u})),...te("search-suggest",e).map(l=>ki(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,Se}}function Pi(e,{index$:t,location$:r}){return Y([t,r.pipe(N(Oe()),x(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>rn(n.config,!0)(o.searchParams.get("h"))),m(n=>{var s;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,f=n(c);f.length>c.length&&o.set(a,f)}for(let[a,c]of o){let{childNodes:f}=M("span",null,c);a.replaceWith(...Array.from(f))}return{ref:e,nodes:o}}))}function Ps(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(o,Math.max(0,a-i))-o,{height:s,locked:a>=i+o})),B((i,s)=>i.height===s.height&&i.locked===s.locked))}function nn(e,n){var o=n,{header$:t}=o,r=un(o,["header$"]);let i=K(".md-sidebar__scrollwrap",e),{y:s}=qe(i);return P(()=>{let a=new E;return a.pipe(Ae(0,xe),ae(t)).subscribe({next([{height:c},{height:f}]){i.style.height=`${c-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),a.pipe(Le(xe),oe(1)).subscribe(()=>{for(let c of Q(".md-nav__link--active[href]",e)){let f=cr(c);if(typeof f!="undefined"){let u=c.offsetTop-f.offsetTop,{height:p}=he(f);f.scrollTo({top:u-p/2})}}}),Ps(e,r).pipe(w(c=>a.next(c)),C(()=>a.complete()),m(c=>H({ref:e},c)))})}function $i(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(je(`${r}/releases/latest`).pipe(ce(()=>R),m(n=>({version:n.tag_name})),De({})),je(r).pipe(ce(()=>R),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),De({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(n=>({repositories:n.public_repos})),De({}))}}function Ii(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return je(r).pipe(ce(()=>R),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),De({}))}function ji(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,n]=t;return $i(r,n)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,n]=t;return Ii(r,n)}return R}var $s;function Is(e){return $s||($s=P(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(te("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return R}return ji(e.href).pipe(w(n=>__md_set("__source",n,sessionStorage)))}).pipe(ce(()=>R),x(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function Fi(e){let t=K(":scope > :last-child",e);return P(()=>{let r=new E;return r.subscribe(({facts:n})=>{t.appendChild(Xo(n)),t.classList.add("md-source__repository--active")}),Is(e).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function js(e,{viewport$:t,header$:r}){return ve(document.body).pipe(S(()=>dr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function Ui(e,t){return P(()=>{let r=new E;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?I({hidden:!1}):js(e,t)).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function Fs(e,{viewport$:t,header$:r}){let n=new Map,o=Q("[href^=\\#]",e);for(let a of o){let c=decodeURIComponent(a.hash.substring(1)),f=pe(`[id="${c}"]`);typeof f!="undefined"&&n.set(a,f)}let i=r.pipe(J("height"),m(({height:a})=>{let c=_e("main"),f=K(":scope > :first-child",c);return a+.8*(f.offsetTop-c.offsetTop)}),ie());return ve(document.body).pipe(J("height"),S(a=>P(()=>{let c=[];return I([...n].reduce((f,[u,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return f.set([...c=[...c,u]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,f],[,u])=>f-u))),Ze(i),S(([c,f])=>t.pipe(Ur(([u,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(a.height);for(;p.length;){let[,b]=p[0];if(b-f=l&&!h)p=[u.pop(),...p];else break}return[u,p]},[[],[...c]]),B((u,p)=>u[0]===p[0]&&u[1]===p[1])))))).pipe(m(([a,c])=>({prev:a.map(([f])=>f),next:c.map(([f])=>f)})),N({prev:[],next:[]}),Ce(2,1),m(([a,c])=>a.prev.length{let o=new E,i=o.pipe(de(1));if(o.subscribe(({prev:s,next:a})=>{for(let[c]of a)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[f]]of s.entries())f.classList.add("md-nav__link--passed"),f.classList.toggle("md-nav__link--active",c===s.length-1)}),Z("toc.follow")){let s=A(t.pipe(Re(1),m(()=>{})),t.pipe(Re(250),m(()=>"smooth")));o.pipe(x(({prev:a})=>a.length>0),ae(s)).subscribe(([{prev:a},c])=>{let[f]=a[a.length-1];if(f.offsetHeight){let u=cr(f);if(typeof u!="undefined"){let p=f.offsetTop-u.offsetTop,{height:l}=he(u);u.scrollTo({top:p-l/2,behavior:c})}}})}return Z("navigation.tracking")&&t.pipe(ee(i),J("offset"),Re(250),He(1),ee(n.pipe(He(1))),Tt({delay:250}),ae(o)).subscribe(([,{prev:s}])=>{let a=Oe(),c=s[s.length-1];if(c&&c.length){let[f]=c,{hash:u}=new URL(f.href);a.hash!==u&&(a.hash=u,history.replaceState({},"",`${a}`))}else a.hash="",history.replaceState({},"",`${a}`)}),Fs(e,{viewport$:t,header$:r}).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))})}function Us(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:s}})=>s),Ce(2,1),m(([s,a])=>s>a&&a>0),B()),i=r.pipe(m(({active:s})=>s));return Y([i,o]).pipe(m(([s,a])=>!(s&&a)),B(),ee(n.pipe(He(1))),Fr(!0),Tt({delay:250}),m(s=>({hidden:s})))}function Wi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new E,s=i.pipe(de(1));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(ee(s),J("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),Us(e,{viewport$:t,main$:n,target$:o}).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}function Vi({document$:e,tablet$:t}){e.pipe(S(()=>Q(".md-toggle--indeterminate, [data-md-state=indeterminate]")),w(r=>{r.indeterminate=!0,r.checked=!1}),se(r=>v(r,"change").pipe(Wr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Ds(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function zi({document$:e}){e.pipe(S(()=>Q("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),x(Ds),se(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ni({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>I(r).pipe(ke(r?400:100))),ae(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n=="string"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=go(),vr=ko(),gt=jo(),on=Ro(),we=qo(),gr=Kr("(min-width: 960px)"),Ki=Kr("(min-width: 1220px)"),Qi=Fo(),Yi=le(),Bi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||je(new URL("search/search_index.json",Yi.base)):Se,an=new E;wi({alert$:an});Z("navigation.instant")&&Ei({document$:tt,location$:vr,viewport$:we});var qi;((qi=Yi.version)==null?void 0:qi.provider)==="mike"&&Li({document$:tt});A(vr,gt).pipe(ke(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});on.pipe(x(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Vi({document$:tt,tablet$:gr});zi({document$:tt});Ni({viewport$:we,tablet$:gr});var Qe=bi(_e("header"),{viewport$:we}),br=tt.pipe(m(()=>_e("main")),S(e=>yi(e,{viewport$:we,header$:Qe})),X(1)),Ws=A(...te("consent").map(e=>Yo(e,{target$:gt})),...te("dialog").map(e=>hi(e,{alert$:an})),...te("header").map(e=>vi(e,{viewport$:we,header$:Qe,main$:br})),...te("palette").map(e=>xi(e)),...te("search").map(e=>Hi(e,{index$:Bi,keyboard$:on})),...te("source").map(e=>Fi(e))),Vs=P(()=>A(...te("announce").map(e=>Qo(e)),...te("content").map(e=>di(e,{viewport$:we,target$:gt,print$:Qi})),...te("content").map(e=>Z("search.highlight")?Pi(e,{index$:Bi,location$:vr}):R),...te("header-title").map(e=>gi(e,{viewport$:we,header$:Qe})),...te("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(Ki,()=>nn(e,{viewport$:we,header$:Qe,main$:br})):Qr(gr,()=>nn(e,{viewport$:we,header$:Qe,main$:br}))),...te("tabs").map(e=>Ui(e,{viewport$:we,header$:Qe})),...te("toc").map(e=>Di(e,{viewport$:we,header$:Qe,target$:gt})),...te("top").map(e=>Wi(e,{viewport$:we,header$:Qe,main$:br,target$:gt})))),Gi=tt.pipe(S(()=>Vs),et(Ws),X(1));Gi.subscribe();window.document$=tt;window.location$=vr;window.target$=gt;window.keyboard$=on;window.viewport$=we;window.tablet$=gr;window.screen$=Ki;window.print$=Qi;window.alert$=an;window.component$=Gi;})(); -//# sourceMappingURL=bundle.5a2dcb6a.min.js.map - diff --git a/assets/javascripts/bundle.5a2dcb6a.min.js.map b/assets/javascripts/bundle.5a2dcb6a.min.js.map deleted file mode 100644 index 34e26a3ad3..0000000000 --- a/assets/javascripts/bundle.5a2dcb6a.min.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], - "sourceRoot": "../../../..", - "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n/**\n * Retrieve the overflowing container of an element, if any\n *\n * @param el - Element\n *\n * @returns Overflowing container or nothing\n */\nexport function getElementContainer(\n el: HTMLElement\n): HTMLElement | undefined {\n let parent = el.parentElement\n while (parent)\n if (\n el.scrollWidth <= parent.scrollWidth &&\n el.scrollHeight <= parent.scrollHeight\n )\n parent = (el = parent).parentElement\n else\n break\n\n /* Return overflowing container */\n return parent ? el : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
/* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.lazy\" /* Lazy content elements */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.follow\" /* Following table of contents */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n tags?: Record /* Tags mapping */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/**\n * Consent defaults\n */\nexport interface ConsentDefaults {\n analytics?: boolean /* Consent for Analytics */\n github?: boolean /* Consent for GitHub */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for code blocks\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * Note that code blocks may be mounted eagerly or lazily. If they're mounted\n * lazily (on first visibility), code annotation anchor links will not work,\n * as they are evaluated on initial page load, and code annotations in general\n * might feel a little bumpier.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block lazily */\n if (feature(\"content.lazy\"))\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n\n /* Mount code block */\n return factory$\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a tooltip\n *\n * @param id - Tooltip identifier\n *\n * @returns Element\n */\nexport function renderTooltip(id?: string): HTMLElement {\n return (\n
\n
\n
\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { renderTooltip } from \"../tooltip\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an annotation\n *\n * @param id - Annotation identifier\n * @param prefix - Tooltip identifier prefix\n *\n * @returns Element\n */\nexport function renderAnnotation(\n id: string | number, prefix?: string\n): HTMLElement {\n prefix = prefix ? `${prefix}_annotation_${id}` : undefined\n\n /* Render tooltip with anchor, if given */\n if (prefix) {\n const anchor = prefix ? `#${prefix}` : undefined\n return (\n \n )\n } else {\n return (\n \n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n const { tags } = configuration()\n return (\n \n \n {parent > 0 &&
}\n

{document.title}

\n {teaser > 0 && document.text.length > 0 &&\n

\n {truncate(document.text, 320)}\n

\n }\n {document.tags && (\n
\n {document.tags.map(tag => {\n const id = tag.replace(/<[^>]+>/g, \"\")\n const type = tags\n ? id in tags\n ? `md-tag-icon md-tag-icon--${tags[id]}`\n : \"md-tag-icon\"\n : \"\"\n return (\n {tag}\n )\n })}\n
\n )}\n {teaser > 0 && missing.length > 0 &&\n

\n {translation(\"search.result.term.missing\")}: {...missing}\n

\n }\n \n
\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
\n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
\n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash - see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n debounceTime,\n defer,\n delay,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getActiveElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]): ElementOffset => {\n const { width, height } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y + height / 2\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement, { target$ }: MountOptions\n): Observable> {\n const [tooltip, index] = Array.from(el.children)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Toggle tooltip presence to mitigate empty lines when copying */\n merge(\n push$.pipe(filter(({ active }) => active)),\n push$.pipe(debounceTime(250), filter(({ active }) => !active))\n )\n .subscribe({\n\n /* Handle emission */\n next({ active }) {\n if (active)\n el.prepend(tooltip)\n else\n tooltip.remove()\n },\n\n /* Handle complete */\n complete() {\n el.prepend(tooltip)\n }\n })\n\n /* Toggle tooltip visibility */\n push$\n .pipe(\n auditTime(16, animationFrameScheduler)\n )\n .subscribe(({ active }) => {\n tooltip.classList.toggle(\"md-tooltip--active\", active)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(125, animationFrameScheduler),\n filter(() => !!el.offsetParent),\n map(() => el.offsetParent!.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Allow to copy link without scrolling to anchor */\n fromEvent(index, \"click\")\n .pipe(\n takeUntil(done$),\n filter(ev => !(ev.metaKey || ev.ctrlKey))\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Allow to open link in new tab or blur on close */\n fromEvent(index, \"mousedown\")\n .pipe(\n takeUntil(done$),\n withLatestFrom(push$)\n )\n .subscribe(([ev, { active }]) => {\n\n /* Open in new tab */\n if (ev.button !== 0 || ev.metaKey || ev.ctrlKey) {\n ev.preventDefault()\n\n /* Close annotation */\n } else if (active) {\n ev.preventDefault()\n\n /* Focus parent annotation, if any */\n const parent = el.parentElement!.closest(\".md-annotation\")\n if (parent instanceof HTMLElement)\n parent.focus()\n else\n getActiveElement()?.blur()\n }\n })\n\n /* Open and focus annotation on location target */\n target$\n .pipe(\n takeUntil(done$),\n filter(target => target === tooltip),\n delay(125)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const el of getElements(\".c, .c1, .cm\", container)) {\n const nodes: Text[] = []\n\n /* Find all text nodes in current element */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode())\n nodes.push(node as Text)\n\n /* Find all markers in each text node */\n for (let text of nodes) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n while ((match = /(\\(\\d+\\))(!)?/.exec(text.textContent!))) {\n const [, id, force] = match\n if (typeof force === \"undefined\") {\n const marker = text.splitText(match.index)\n text = marker.splitText(id.length)\n markers.push(marker)\n\n /* Replace entire text with marker */\n } else {\n text.textContent = id\n markers.push(text)\n break\n }\n }\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n\n /* Compute prefix for tooltip anchors */\n const parent = container.closest(\"[id]\")\n const prefix = parent?.id\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(id, renderAnnotation(id, prefix))\n marker.replaceWith(annotations.get(id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const done$ = new Subject()\n\n /* Retrieve container pairs for swapping */\n const pairs: [HTMLElement, HTMLElement][] = []\n for (const [id, annotation] of annotations)\n pairs.push([\n getElement(\".md-typeset\", annotation),\n getElement(`li:nth-child(${id})`, el)\n ])\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [inner, child] of pairs)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container, { target$ })\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js\")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS,\n sequence: {\n actorFontSize: \"16px\", // Hack: mitigate https://bit.ly/3y0NEi3\n messageFontSize: \"16px\",\n noteFontSize: \"16px\"\n }\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n el.toggleAttribute(\"open\", action === \"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n * @param options - Options\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement, { viewport$ }: MountOptions\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(\n skip(1),\n withLatestFrom(viewport$)\n )\n .subscribe(([{ active }, { offset }]) => {\n const tab = active.innerText.trim()\n if (active.hasAttribute(\"data-md-switching\")) {\n active.removeAttribute(\"data-md-switching\")\n\n /* Determine viewport offset of active tab */\n } else {\n const y = el.offsetTop - offset.y\n\n /* Passively activate other tabs */\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (\n label !== active &&\n label.innerText.trim() === tab\n ) {\n label.setAttribute(\"data-md-switching\", \"\")\n input.click()\n break\n }\n }\n\n /* Bring active tab into view */\n window.scrollTo({\n top: el.offsetTop - y\n })\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n }\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { viewport$, target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { target$, print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child, { viewport$ }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path.split(\"#\")[0])\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n take,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementOffset,\n getElementSize,\n getElements\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Bring active item into view on initial load */\n push$\n .pipe(\n observeOn(animationFrameScheduler),\n take(1)\n )\n .subscribe(() => {\n for (const item of getElements(\".md-nav__link--active[href]\", el)) {\n const container = getElementContainer(item)\n if (typeof container !== \"undefined\") {\n const offset = item.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2\n })\n }\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n\n /* Try to match GitHub repository */\n let match = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)\n if (match) {\n const [, user, repo] = match\n return fetchSourceFactsFromGitHub(user, repo)\n }\n\n /* Try to match GitLab repository */\n match = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)\n if (match) {\n const [, base, slug] = match\n return fetchSourceFactsFromGitLab(base, slug)\n }\n\n /* Fallback */\n return EMPTY\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { ConsentDefaults } from \"~/components/consent\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport {\n Component,\n getComponentElements\n} from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached) {\n return of(cached)\n } else {\n\n /* Check if consent is configured and was given */\n const els = getComponentElements(\"consent\")\n if (els.length) {\n const consent = __md_get(\"__consent\")\n if (!(consent && consent.github))\n return EMPTY\n }\n\n /* Fetch repository facts */\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n }\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementSize,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up following, if enabled */\n if (feature(\"toc.follow\")) {\n\n /* Toggle smooth scrolling only for anchor clicks */\n const smooth$ = merge(\n viewport$.pipe(debounceTime(1), map(() => undefined)),\n viewport$.pipe(debounceTime(250), map(() => \"smooth\" as const))\n )\n\n /* Bring active anchor into view */\n push$\n .pipe(\n filter(({ prev }) => prev.length > 0),\n withLatestFrom(smooth$)\n )\n .subscribe(([{ prev }, behavior]) => {\n const [anchor] = prev[prev.length - 1]\n if (anchor.offsetHeight) {\n\n /* Retrieve overflowing container and scroll */\n const container = getElementContainer(anchor)\n if (typeof container !== \"undefined\") {\n const offset = anchor.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2,\n behavior\n })\n }\n }\n })\n }\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node === \"string\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], - "mappings": "6+BAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUC,EAAQC,EAAS,CAC1B,OAAOH,IAAY,UAAY,OAAOC,IAAW,YAAcE,EAAQ,EACvE,OAAO,QAAW,YAAc,OAAO,IAAM,OAAOA,CAAO,EAC1DA,EAAQ,CACX,GAAEH,GAAO,UAAY,CAAE,aASrB,SAASI,EAA0BC,EAAO,CACxC,IAAIC,EAAmB,GACnBC,EAA0B,GAC1BC,EAAiC,KAEjCC,EAAsB,CACxB,KAAM,GACN,OAAQ,GACR,IAAK,GACL,IAAK,GACL,MAAO,GACP,SAAU,GACV,OAAQ,GACR,KAAM,GACN,MAAO,GACP,KAAM,GACN,KAAM,GACN,SAAU,GACV,iBAAkB,EACpB,EAOA,SAASC,EAAmBC,EAAI,CAC9B,MACE,GAAAA,GACAA,IAAO,UACPA,EAAG,WAAa,QAChBA,EAAG,WAAa,QAChB,cAAeA,GACf,aAAcA,EAAG,UAKrB,CASA,SAASC,EAA8BD,EAAI,CACzC,IAAIE,GAAOF,EAAG,KACVG,GAAUH,EAAG,QAUjB,MARI,GAAAG,KAAY,SAAWL,EAAoBI,KAAS,CAACF,EAAG,UAIxDG,KAAY,YAAc,CAACH,EAAG,UAI9BA,EAAG,kBAKT,CAOA,SAASI,EAAqBJ,EAAI,CAC5BA,EAAG,UAAU,SAAS,eAAe,IAGzCA,EAAG,UAAU,IAAI,eAAe,EAChCA,EAAG,aAAa,2BAA4B,EAAE,EAChD,CAOA,SAASK,EAAwBL,EAAI,CAC/B,CAACA,EAAG,aAAa,0BAA0B,IAG/CA,EAAG,UAAU,OAAO,eAAe,EACnCA,EAAG,gBAAgB,0BAA0B,EAC/C,CAUA,SAASM,EAAUC,EAAG,CAChBA,EAAE,SAAWA,EAAE,QAAUA,EAAE,UAI3BR,EAAmBL,EAAM,aAAa,GACxCU,EAAqBV,EAAM,aAAa,EAG1CC,EAAmB,GACrB,CAUA,SAASa,EAAcD,EAAG,CACxBZ,EAAmB,EACrB,CASA,SAASc,EAAQF,EAAG,CAEd,CAACR,EAAmBQ,EAAE,MAAM,IAI5BZ,GAAoBM,EAA8BM,EAAE,MAAM,IAC5DH,EAAqBG,EAAE,MAAM,CAEjC,CAMA,SAASG,EAAOH,EAAG,CACb,CAACR,EAAmBQ,EAAE,MAAM,IAK9BA,EAAE,OAAO,UAAU,SAAS,eAAe,GAC3CA,EAAE,OAAO,aAAa,0BAA0B,KAMhDX,EAA0B,GAC1B,OAAO,aAAaC,CAA8B,EAClDA,EAAiC,OAAO,WAAW,UAAW,CAC5DD,EAA0B,EAC5B,EAAG,GAAG,EACNS,EAAwBE,EAAE,MAAM,EAEpC,CAOA,SAASI,EAAmBJ,EAAG,CACzB,SAAS,kBAAoB,WAK3BX,IACFD,EAAmB,IAErBiB,EAA+B,EAEnC,CAQA,SAASA,GAAiC,CACxC,SAAS,iBAAiB,YAAaC,CAAoB,EAC3D,SAAS,iBAAiB,YAAaA,CAAoB,EAC3D,SAAS,iBAAiB,UAAWA,CAAoB,EACzD,SAAS,iBAAiB,cAAeA,CAAoB,EAC7D,SAAS,iBAAiB,cAAeA,CAAoB,EAC7D,SAAS,iBAAiB,YAAaA,CAAoB,EAC3D,SAAS,iBAAiB,YAAaA,CAAoB,EAC3D,SAAS,iBAAiB,aAAcA,CAAoB,EAC5D,SAAS,iBAAiB,WAAYA,CAAoB,CAC5D,CAEA,SAASC,GAAoC,CAC3C,SAAS,oBAAoB,YAAaD,CAAoB,EAC9D,SAAS,oBAAoB,YAAaA,CAAoB,EAC9D,SAAS,oBAAoB,UAAWA,CAAoB,EAC5D,SAAS,oBAAoB,cAAeA,CAAoB,EAChE,SAAS,oBAAoB,cAAeA,CAAoB,EAChE,SAAS,oBAAoB,YAAaA,CAAoB,EAC9D,SAAS,oBAAoB,YAAaA,CAAoB,EAC9D,SAAS,oBAAoB,aAAcA,CAAoB,EAC/D,SAAS,oBAAoB,WAAYA,CAAoB,CAC/D,CASA,SAASA,EAAqBN,EAAG,CAG3BA,EAAE,OAAO,UAAYA,EAAE,OAAO,SAAS,YAAY,IAAM,SAI7DZ,EAAmB,GACnBmB,EAAkC,EACpC,CAKA,SAAS,iBAAiB,UAAWR,EAAW,EAAI,EACpD,SAAS,iBAAiB,YAAaE,EAAe,EAAI,EAC1D,SAAS,iBAAiB,cAAeA,EAAe,EAAI,EAC5D,SAAS,iBAAiB,aAAcA,EAAe,EAAI,EAC3D,SAAS,iBAAiB,mBAAoBG,EAAoB,EAAI,EAEtEC,EAA+B,EAM/BlB,EAAM,iBAAiB,QAASe,EAAS,EAAI,EAC7Cf,EAAM,iBAAiB,OAAQgB,EAAQ,EAAI,EAOvChB,EAAM,WAAa,KAAK,wBAA0BA,EAAM,KAI1DA,EAAM,KAAK,aAAa,wBAAyB,EAAE,EAC1CA,EAAM,WAAa,KAAK,gBACjC,SAAS,gBAAgB,UAAU,IAAI,kBAAkB,EACzD,SAAS,gBAAgB,aAAa,wBAAyB,EAAE,EAErE,CAKA,GAAI,OAAO,QAAW,aAAe,OAAO,UAAa,YAAa,CAIpE,OAAO,0BAA4BD,EAInC,IAAIsB,EAEJ,GAAI,CACFA,EAAQ,IAAI,YAAY,8BAA8B,CACxD,OAASC,EAAP,CAEAD,EAAQ,SAAS,YAAY,aAAa,EAC1CA,EAAM,gBAAgB,+BAAgC,GAAO,GAAO,CAAC,CAAC,CACxE,CAEA,OAAO,cAAcA,CAAK,CAC5B,CAEI,OAAO,UAAa,aAGtBtB,EAA0B,QAAQ,CAGtC,CAAE,ICvTF,IAAAwB,GAAAC,GAAAC,IAAA,EAAC,SAASC,EAAQ,CAOhB,IAAIC,EAA6B,UAAW,CAC1C,GAAI,CACF,MAAO,CAAC,CAAC,OAAO,QAClB,OAASC,EAAP,CACA,MAAO,EACT,CACF,EAGIC,EAAoBF,EAA2B,EAE/CG,EAAiB,SAASC,EAAO,CACnC,IAAIC,EAAW,CACb,KAAM,UAAW,CACf,IAAIC,EAAQF,EAAM,MAAM,EACxB,MAAO,CAAE,KAAME,IAAU,OAAQ,MAAOA,CAAM,CAChD,CACF,EAEA,OAAIJ,IACFG,EAAS,OAAO,UAAY,UAAW,CACrC,OAAOA,CACT,GAGKA,CACT,EAMIE,EAAiB,SAASD,EAAO,CACnC,OAAO,mBAAmBA,CAAK,EAAE,QAAQ,OAAQ,GAAG,CACtD,EAEIE,EAAmB,SAASF,EAAO,CACrC,OAAO,mBAAmB,OAAOA,CAAK,EAAE,QAAQ,MAAO,GAAG,CAAC,CAC7D,EAEIG,EAA0B,UAAW,CAEvC,IAAIC,EAAkB,SAASC,EAAc,CAC3C,OAAO,eAAe,KAAM,WAAY,CAAE,SAAU,GAAM,MAAO,CAAC,CAAE,CAAC,EACrE,IAAIC,EAAqB,OAAOD,EAEhC,GAAIC,IAAuB,YAEpB,GAAIA,IAAuB,SAC5BD,IAAiB,IACnB,KAAK,YAAYA,CAAY,UAEtBA,aAAwBD,EAAiB,CAClD,IAAIG,EAAQ,KACZF,EAAa,QAAQ,SAASL,EAAOQ,EAAM,CACzCD,EAAM,OAAOC,EAAMR,CAAK,CAC1B,CAAC,CACH,SAAYK,IAAiB,MAAUC,IAAuB,SAC5D,GAAI,OAAO,UAAU,SAAS,KAAKD,CAAY,IAAM,iBACnD,QAASI,EAAI,EAAGA,EAAIJ,EAAa,OAAQI,IAAK,CAC5C,IAAIC,EAAQL,EAAaI,GACzB,GAAK,OAAO,UAAU,SAAS,KAAKC,CAAK,IAAM,kBAAsBA,EAAM,SAAW,EACpF,KAAK,OAAOA,EAAM,GAAIA,EAAM,EAAE,MAE9B,OAAM,IAAI,UAAU,4CAA8CD,EAAI,6BAA8B,CAExG,KAEA,SAASE,KAAON,EACVA,EAAa,eAAeM,CAAG,GACjC,KAAK,OAAOA,EAAKN,EAAaM,EAAI,MAKxC,OAAM,IAAI,UAAU,8CAA+C,CAEvE,EAEIC,EAAQR,EAAgB,UAE5BQ,EAAM,OAAS,SAASJ,EAAMR,EAAO,CAC/BQ,KAAQ,KAAK,SACf,KAAK,SAASA,GAAM,KAAK,OAAOR,CAAK,CAAC,EAEtC,KAAK,SAASQ,GAAQ,CAAC,OAAOR,CAAK,CAAC,CAExC,EAEAY,EAAM,OAAS,SAASJ,EAAM,CAC5B,OAAO,KAAK,SAASA,EACvB,EAEAI,EAAM,IAAM,SAASJ,EAAM,CACzB,OAAQA,KAAQ,KAAK,SAAY,KAAK,SAASA,GAAM,GAAK,IAC5D,EAEAI,EAAM,OAAS,SAASJ,EAAM,CAC5B,OAAQA,KAAQ,KAAK,SAAY,KAAK,SAASA,GAAM,MAAM,CAAC,EAAI,CAAC,CACnE,EAEAI,EAAM,IAAM,SAASJ,EAAM,CACzB,OAAQA,KAAQ,KAAK,QACvB,EAEAI,EAAM,IAAM,SAASJ,EAAMR,EAAO,CAChC,KAAK,SAASQ,GAAQ,CAAC,OAAOR,CAAK,CAAC,CACtC,EAEAY,EAAM,QAAU,SAASC,EAAUC,EAAS,CAC1C,IAAIC,EACJ,QAASP,KAAQ,KAAK,SACpB,GAAI,KAAK,SAAS,eAAeA,CAAI,EAAG,CACtCO,EAAU,KAAK,SAASP,GACxB,QAASC,EAAI,EAAGA,EAAIM,EAAQ,OAAQN,IAClCI,EAAS,KAAKC,EAASC,EAAQN,GAAID,EAAM,IAAI,CAEjD,CAEJ,EAEAI,EAAM,KAAO,UAAW,CACtB,IAAId,EAAQ,CAAC,EACb,YAAK,QAAQ,SAASE,EAAOQ,EAAM,CACjCV,EAAM,KAAKU,CAAI,CACjB,CAAC,EACMX,EAAeC,CAAK,CAC7B,EAEAc,EAAM,OAAS,UAAW,CACxB,IAAId,EAAQ,CAAC,EACb,YAAK,QAAQ,SAASE,EAAO,CAC3BF,EAAM,KAAKE,CAAK,CAClB,CAAC,EACMH,EAAeC,CAAK,CAC7B,EAEAc,EAAM,QAAU,UAAW,CACzB,IAAId,EAAQ,CAAC,EACb,YAAK,QAAQ,SAASE,EAAOQ,EAAM,CACjCV,EAAM,KAAK,CAACU,EAAMR,CAAK,CAAC,CAC1B,CAAC,EACMH,EAAeC,CAAK,CAC7B,EAEIF,IACFgB,EAAM,OAAO,UAAYA,EAAM,SAGjCA,EAAM,SAAW,UAAW,CAC1B,IAAII,EAAc,CAAC,EACnB,YAAK,QAAQ,SAAShB,EAAOQ,EAAM,CACjCQ,EAAY,KAAKf,EAAeO,CAAI,EAAI,IAAMP,EAAeD,CAAK,CAAC,CACrE,CAAC,EACMgB,EAAY,KAAK,GAAG,CAC7B,EAGAvB,EAAO,gBAAkBW,CAC3B,EAEIa,EAAkC,UAAW,CAC/C,GAAI,CACF,IAAIb,EAAkBX,EAAO,gBAE7B,OACG,IAAIW,EAAgB,MAAM,EAAE,SAAS,IAAM,OAC3C,OAAOA,EAAgB,UAAU,KAAQ,YACzC,OAAOA,EAAgB,UAAU,SAAY,UAElD,OAASc,EAAP,CACA,MAAO,EACT,CACF,EAEKD,EAAgC,GACnCd,EAAwB,EAG1B,IAAIS,EAAQnB,EAAO,gBAAgB,UAE/B,OAAOmB,EAAM,MAAS,aACxBA,EAAM,KAAO,UAAW,CACtB,IAAIL,EAAQ,KACRT,EAAQ,CAAC,EACb,KAAK,QAAQ,SAASE,EAAOQ,EAAM,CACjCV,EAAM,KAAK,CAACU,EAAMR,CAAK,CAAC,EACnBO,EAAM,UACTA,EAAM,OAAOC,CAAI,CAErB,CAAC,EACDV,EAAM,KAAK,SAASqB,EAAGC,EAAG,CACxB,OAAID,EAAE,GAAKC,EAAE,GACJ,GACED,EAAE,GAAKC,EAAE,GACX,EAEA,CAEX,CAAC,EACGb,EAAM,WACRA,EAAM,SAAW,CAAC,GAEpB,QAASE,EAAI,EAAGA,EAAIX,EAAM,OAAQW,IAChC,KAAK,OAAOX,EAAMW,GAAG,GAAIX,EAAMW,GAAG,EAAE,CAExC,GAGE,OAAOG,EAAM,aAAgB,YAC/B,OAAO,eAAeA,EAAO,cAAe,CAC1C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,SAASP,EAAc,CAC5B,GAAI,KAAK,SACP,KAAK,SAAW,CAAC,MACZ,CACL,IAAIgB,EAAO,CAAC,EACZ,KAAK,QAAQ,SAASrB,EAAOQ,EAAM,CACjCa,EAAK,KAAKb,CAAI,CAChB,CAAC,EACD,QAASC,EAAI,EAAGA,EAAIY,EAAK,OAAQZ,IAC/B,KAAK,OAAOY,EAAKZ,EAAE,CAEvB,CAEAJ,EAAeA,EAAa,QAAQ,MAAO,EAAE,EAG7C,QAFIiB,EAAajB,EAAa,MAAM,GAAG,EACnCkB,EACKd,EAAI,EAAGA,EAAIa,EAAW,OAAQb,IACrCc,EAAYD,EAAWb,GAAG,MAAM,GAAG,EACnC,KAAK,OACHP,EAAiBqB,EAAU,EAAE,EAC5BA,EAAU,OAAS,EAAKrB,EAAiBqB,EAAU,EAAE,EAAI,EAC5D,CAEJ,CACF,CAAC,CAKL,GACG,OAAO,QAAW,YAAe,OAC5B,OAAO,QAAW,YAAe,OACjC,OAAO,MAAS,YAAe,KAAO/B,EAC9C,GAEC,SAASC,EAAQ,CAOhB,IAAI+B,EAAwB,UAAW,CACrC,GAAI,CACF,IAAIC,EAAI,IAAIhC,EAAO,IAAI,IAAK,UAAU,EACtC,OAAAgC,EAAE,SAAW,MACLA,EAAE,OAAS,kBAAqBA,EAAE,YAC5C,OAASP,EAAP,CACA,MAAO,EACT,CACF,EAGIQ,EAAc,UAAW,CAC3B,IAAIC,EAAOlC,EAAO,IAEdmC,EAAM,SAASC,EAAKC,EAAM,CACxB,OAAOD,GAAQ,WAAUA,EAAM,OAAOA,CAAG,GACzCC,GAAQ,OAAOA,GAAS,WAAUA,EAAO,OAAOA,CAAI,GAGxD,IAAIC,EAAM,SAAUC,EACpB,GAAIF,IAASrC,EAAO,WAAa,QAAUqC,IAASrC,EAAO,SAAS,MAAO,CACzEqC,EAAOA,EAAK,YAAY,EACxBC,EAAM,SAAS,eAAe,mBAAmB,EAAE,EACnDC,EAAcD,EAAI,cAAc,MAAM,EACtCC,EAAY,KAAOF,EACnBC,EAAI,KAAK,YAAYC,CAAW,EAChC,GAAI,CACF,GAAIA,EAAY,KAAK,QAAQF,CAAI,IAAM,EAAG,MAAM,IAAI,MAAME,EAAY,IAAI,CAC5E,OAASC,EAAP,CACA,MAAM,IAAI,MAAM,0BAA4BH,EAAO,WAAaG,CAAG,CACrE,CACF,CAEA,IAAIC,EAAgBH,EAAI,cAAc,GAAG,EACzCG,EAAc,KAAOL,EACjBG,IACFD,EAAI,KAAK,YAAYG,CAAa,EAClCA,EAAc,KAAOA,EAAc,MAGrC,IAAIC,EAAeJ,EAAI,cAAc,OAAO,EAI5C,GAHAI,EAAa,KAAO,MACpBA,EAAa,MAAQN,EAEjBK,EAAc,WAAa,KAAO,CAAC,IAAI,KAAKA,EAAc,IAAI,GAAM,CAACC,EAAa,cAAc,GAAK,CAACL,EACxG,MAAM,IAAI,UAAU,aAAa,EAGnC,OAAO,eAAe,KAAM,iBAAkB,CAC5C,MAAOI,CACT,CAAC,EAID,IAAIE,EAAe,IAAI3C,EAAO,gBAAgB,KAAK,MAAM,EACrD4C,EAAqB,GACrBC,EAA2B,GAC3B/B,EAAQ,KACZ,CAAC,SAAU,SAAU,KAAK,EAAE,QAAQ,SAASgC,EAAY,CACvD,IAAIC,GAASJ,EAAaG,GAC1BH,EAAaG,GAAc,UAAW,CACpCC,GAAO,MAAMJ,EAAc,SAAS,EAChCC,IACFC,EAA2B,GAC3B/B,EAAM,OAAS6B,EAAa,SAAS,EACrCE,EAA2B,GAE/B,CACF,CAAC,EAED,OAAO,eAAe,KAAM,eAAgB,CAC1C,MAAOF,EACP,WAAY,EACd,CAAC,EAED,IAAIK,EAAS,OACb,OAAO,eAAe,KAAM,sBAAuB,CACjD,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,UAAW,CACZ,KAAK,SAAWA,IAClBA,EAAS,KAAK,OACVH,IACFD,EAAqB,GACrB,KAAK,aAAa,YAAY,KAAK,MAAM,EACzCA,EAAqB,IAG3B,CACF,CAAC,CACH,EAEIzB,EAAQgB,EAAI,UAEZc,EAA6B,SAASC,EAAe,CACvD,OAAO,eAAe/B,EAAO+B,EAAe,CAC1C,IAAK,UAAW,CACd,OAAO,KAAK,eAAeA,EAC7B,EACA,IAAK,SAAS3C,EAAO,CACnB,KAAK,eAAe2C,GAAiB3C,CACvC,EACA,WAAY,EACd,CAAC,CACH,EAEA,CAAC,OAAQ,OAAQ,WAAY,OAAQ,UAAU,EAC5C,QAAQ,SAAS2C,EAAe,CAC/BD,EAA2BC,CAAa,CAC1C,CAAC,EAEH,OAAO,eAAe/B,EAAO,SAAU,CACrC,IAAK,UAAW,CACd,OAAO,KAAK,eAAe,MAC7B,EACA,IAAK,SAASZ,EAAO,CACnB,KAAK,eAAe,OAAYA,EAChC,KAAK,oBAAoB,CAC3B,EACA,WAAY,EACd,CAAC,EAED,OAAO,iBAAiBY,EAAO,CAE7B,SAAY,CACV,IAAK,UAAW,CACd,IAAIL,EAAQ,KACZ,OAAO,UAAW,CAChB,OAAOA,EAAM,IACf,CACF,CACF,EAEA,KAAQ,CACN,IAAK,UAAW,CACd,OAAO,KAAK,eAAe,KAAK,QAAQ,MAAO,EAAE,CACnD,EACA,IAAK,SAASP,EAAO,CACnB,KAAK,eAAe,KAAOA,EAC3B,KAAK,oBAAoB,CAC3B,EACA,WAAY,EACd,EAEA,SAAY,CACV,IAAK,UAAW,CACd,OAAO,KAAK,eAAe,SAAS,QAAQ,SAAU,GAAG,CAC3D,EACA,IAAK,SAASA,EAAO,CACnB,KAAK,eAAe,SAAWA,CACjC,EACA,WAAY,EACd,EAEA,OAAU,CACR,IAAK,UAAW,CAEd,IAAI4C,EAAe,CAAE,QAAS,GAAI,SAAU,IAAK,OAAQ,EAAG,EAAE,KAAK,eAAe,UAI9EC,EAAkB,KAAK,eAAe,MAAQD,GAChD,KAAK,eAAe,OAAS,GAE/B,OAAO,KAAK,eAAe,SACzB,KACA,KAAK,eAAe,UACnBC,EAAmB,IAAM,KAAK,eAAe,KAAQ,GAC1D,EACA,WAAY,EACd,EAEA,SAAY,CACV,IAAK,UAAW,CACd,MAAO,EACT,EACA,IAAK,SAAS7C,EAAO,CACrB,EACA,WAAY,EACd,EAEA,SAAY,CACV,IAAK,UAAW,CACd,MAAO,EACT,EACA,IAAK,SAASA,EAAO,CACrB,EACA,WAAY,EACd,CACF,CAAC,EAED4B,EAAI,gBAAkB,SAASkB,EAAM,CACnC,OAAOnB,EAAK,gBAAgB,MAAMA,EAAM,SAAS,CACnD,EAEAC,EAAI,gBAAkB,SAASC,EAAK,CAClC,OAAOF,EAAK,gBAAgB,MAAMA,EAAM,SAAS,CACnD,EAEAlC,EAAO,IAAMmC,CAEf,EAMA,GAJKJ,EAAsB,GACzBE,EAAY,EAGTjC,EAAO,WAAa,QAAW,EAAE,WAAYA,EAAO,UAAW,CAClE,IAAIsD,EAAY,UAAW,CACzB,OAAOtD,EAAO,SAAS,SAAW,KAAOA,EAAO,SAAS,UAAYA,EAAO,SAAS,KAAQ,IAAMA,EAAO,SAAS,KAAQ,GAC7H,EAEA,GAAI,CACF,OAAO,eAAeA,EAAO,SAAU,SAAU,CAC/C,IAAKsD,EACL,WAAY,EACd,CAAC,CACH,OAAS7B,EAAP,CACA,YAAY,UAAW,CACrBzB,EAAO,SAAS,OAASsD,EAAU,CACrC,EAAG,GAAG,CACR,CACF,CAEF,GACG,OAAO,QAAW,YAAe,OAC5B,OAAO,QAAW,YAAe,OACjC,OAAO,MAAS,YAAe,KAAOvD,EAC9C,IC5eA,IAAAwD,GAAAC,GAAA,CAAAC,GAAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAeA,IAAIC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IACH,SAAUC,EAAS,CAChB,IAAIC,EAAO,OAAO,QAAW,SAAW,OAAS,OAAO,MAAS,SAAW,KAAO,OAAO,MAAS,SAAW,KAAO,CAAC,EAClH,OAAO,QAAW,YAAc,OAAO,IACvC,OAAO,QAAS,CAAC,SAAS,EAAG,SAAU3B,EAAS,CAAE0B,EAAQE,EAAeD,EAAMC,EAAe5B,CAAO,CAAC,CAAC,CAAG,CAAC,EAEtG,OAAOC,IAAW,UAAY,OAAOA,GAAO,SAAY,SAC7DyB,EAAQE,EAAeD,EAAMC,EAAe3B,GAAO,OAAO,CAAC,CAAC,EAG5DyB,EAAQE,EAAeD,CAAI,CAAC,EAEhC,SAASC,EAAe5B,EAAS6B,EAAU,CACvC,OAAI7B,IAAY2B,IACR,OAAO,OAAO,QAAW,WACzB,OAAO,eAAe3B,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAG5DA,EAAQ,WAAa,IAGtB,SAAU8B,EAAIC,EAAG,CAAE,OAAO/B,EAAQ8B,GAAMD,EAAWA,EAASC,EAAIC,CAAC,EAAIA,CAAG,CACnF,CACJ,GACC,SAAUC,EAAU,CACjB,IAAIC,EAAgB,OAAO,gBACtB,CAAE,UAAW,CAAC,CAAE,YAAa,OAAS,SAAUC,EAAGC,EAAG,CAAED,EAAE,UAAYC,CAAG,GAC1E,SAAUD,EAAGC,EAAG,CAAE,QAASC,KAAKD,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,IAAGF,EAAEE,GAAKD,EAAEC,GAAI,EAEpGlC,GAAY,SAAUgC,EAAGC,EAAG,CACxB,GAAI,OAAOA,GAAM,YAAcA,IAAM,KACjC,MAAM,IAAI,UAAU,uBAAyB,OAAOA,CAAC,EAAI,+BAA+B,EAC5FF,EAAcC,EAAGC,CAAC,EAClB,SAASE,GAAK,CAAE,KAAK,YAAcH,CAAG,CACtCA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKE,EAAG,UAAYF,EAAE,UAAW,IAAIE,EACnF,EAEAlC,GAAW,OAAO,QAAU,SAAUmC,EAAG,CACrC,QAASC,EAAG,EAAI,EAAGC,EAAI,UAAU,OAAQ,EAAIA,EAAG,IAAK,CACjDD,EAAI,UAAU,GACd,QAASH,KAAKG,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGH,CAAC,IAAGE,EAAEF,GAAKG,EAAEH,GAC9E,CACA,OAAOE,CACX,EAEAlC,GAAS,SAAUmC,EAAGE,EAAG,CACrB,IAAIH,EAAI,CAAC,EACT,QAASF,KAAKG,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGH,CAAC,GAAKK,EAAE,QAAQL,CAAC,EAAI,IAC9EE,EAAEF,GAAKG,EAAEH,IACb,GAAIG,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WACrD,QAASG,EAAI,EAAGN,EAAI,OAAO,sBAAsBG,CAAC,EAAGG,EAAIN,EAAE,OAAQM,IAC3DD,EAAE,QAAQL,EAAEM,EAAE,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKH,EAAGH,EAAEM,EAAE,IACzEJ,EAAEF,EAAEM,IAAMH,EAAEH,EAAEM,KAE1B,OAAOJ,CACX,EAEAjC,GAAa,SAAUsC,EAAYC,EAAQC,EAAKC,EAAM,CAClD,IAAIC,EAAI,UAAU,OAAQC,EAAID,EAAI,EAAIH,EAASE,IAAS,KAAOA,EAAO,OAAO,yBAAyBF,EAAQC,CAAG,EAAIC,EAAMZ,EAC3H,GAAI,OAAO,SAAY,UAAY,OAAO,QAAQ,UAAa,WAAYc,EAAI,QAAQ,SAASL,EAAYC,EAAQC,EAAKC,CAAI,MACxH,SAASJ,EAAIC,EAAW,OAAS,EAAGD,GAAK,EAAGA,KAASR,EAAIS,EAAWD,MAAIM,GAAKD,EAAI,EAAIb,EAAEc,CAAC,EAAID,EAAI,EAAIb,EAAEU,EAAQC,EAAKG,CAAC,EAAId,EAAEU,EAAQC,CAAG,IAAMG,GAChJ,OAAOD,EAAI,GAAKC,GAAK,OAAO,eAAeJ,EAAQC,EAAKG,CAAC,EAAGA,CAChE,EAEA1C,GAAU,SAAU2C,EAAYC,EAAW,CACvC,OAAO,SAAUN,EAAQC,EAAK,CAAEK,EAAUN,EAAQC,EAAKI,CAAU,CAAG,CACxE,EAEA1C,GAAa,SAAU4C,EAAaC,EAAe,CAC/C,GAAI,OAAO,SAAY,UAAY,OAAO,QAAQ,UAAa,WAAY,OAAO,QAAQ,SAASD,EAAaC,CAAa,CACjI,EAEA5C,GAAY,SAAU6C,EAASC,EAAYC,EAAGC,EAAW,CACrD,SAASC,EAAMC,EAAO,CAAE,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,EAAE,SAAUI,EAAS,CAAEA,EAAQD,CAAK,CAAG,CAAC,CAAG,CAC3G,OAAO,IAAKH,IAAMA,EAAI,UAAU,SAAUI,EAASC,EAAQ,CACvD,SAASC,EAAUH,EAAO,CAAE,GAAI,CAAEI,EAAKN,EAAU,KAAKE,CAAK,CAAC,CAAG,OAASjB,EAAP,CAAYmB,EAAOnB,CAAC,CAAG,CAAE,CAC1F,SAASsB,EAASL,EAAO,CAAE,GAAI,CAAEI,EAAKN,EAAU,MAASE,CAAK,CAAC,CAAG,OAASjB,EAAP,CAAYmB,EAAOnB,CAAC,CAAG,CAAE,CAC7F,SAASqB,EAAKE,EAAQ,CAAEA,EAAO,KAAOL,EAAQK,EAAO,KAAK,EAAIP,EAAMO,EAAO,KAAK,EAAE,KAAKH,EAAWE,CAAQ,CAAG,CAC7GD,GAAMN,EAAYA,EAAU,MAAMH,EAASC,GAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CACxE,CAAC,CACL,EAEA7C,GAAc,SAAU4C,EAASY,EAAM,CACnC,IAAIC,EAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CAAE,GAAI5B,EAAE,GAAK,EAAG,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,CAAE,EAAG6B,EAAGC,EAAG9B,EAAG+B,EAC/G,OAAOA,EAAI,CAAE,KAAMC,EAAK,CAAC,EAAG,MAASA,EAAK,CAAC,EAAG,OAAUA,EAAK,CAAC,CAAE,EAAG,OAAO,QAAW,aAAeD,EAAE,OAAO,UAAY,UAAW,CAAE,OAAO,IAAM,GAAIA,EACvJ,SAASC,EAAK9B,EAAG,CAAE,OAAO,SAAUT,EAAG,CAAE,OAAO+B,EAAK,CAACtB,EAAGT,CAAC,CAAC,CAAG,CAAG,CACjE,SAAS+B,EAAKS,EAAI,CACd,GAAIJ,EAAG,MAAM,IAAI,UAAU,iCAAiC,EAC5D,KAAOD,GAAG,GAAI,CACV,GAAIC,EAAI,EAAGC,IAAM9B,EAAIiC,EAAG,GAAK,EAAIH,EAAE,OAAYG,EAAG,GAAKH,EAAE,SAAc9B,EAAI8B,EAAE,SAAc9B,EAAE,KAAK8B,CAAC,EAAG,GAAKA,EAAE,OAAS,EAAE9B,EAAIA,EAAE,KAAK8B,EAAGG,EAAG,EAAE,GAAG,KAAM,OAAOjC,EAE3J,OADI8B,EAAI,EAAG9B,IAAGiC,EAAK,CAACA,EAAG,GAAK,EAAGjC,EAAE,KAAK,GAC9BiC,EAAG,GAAI,CACX,IAAK,GAAG,IAAK,GAAGjC,EAAIiC,EAAI,MACxB,IAAK,GAAG,OAAAL,EAAE,QAAgB,CAAE,MAAOK,EAAG,GAAI,KAAM,EAAM,EACtD,IAAK,GAAGL,EAAE,QAASE,EAAIG,EAAG,GAAIA,EAAK,CAAC,CAAC,EAAG,SACxC,IAAK,GAAGA,EAAKL,EAAE,IAAI,IAAI,EAAGA,EAAE,KAAK,IAAI,EAAG,SACxC,QACI,GAAM5B,EAAI4B,EAAE,KAAM,EAAA5B,EAAIA,EAAE,OAAS,GAAKA,EAAEA,EAAE,OAAS,MAAQiC,EAAG,KAAO,GAAKA,EAAG,KAAO,GAAI,CAAEL,EAAI,EAAG,QAAU,CAC3G,GAAIK,EAAG,KAAO,IAAM,CAACjC,GAAMiC,EAAG,GAAKjC,EAAE,IAAMiC,EAAG,GAAKjC,EAAE,IAAM,CAAE4B,EAAE,MAAQK,EAAG,GAAI,KAAO,CACrF,GAAIA,EAAG,KAAO,GAAKL,EAAE,MAAQ5B,EAAE,GAAI,CAAE4B,EAAE,MAAQ5B,EAAE,GAAIA,EAAIiC,EAAI,KAAO,CACpE,GAAIjC,GAAK4B,EAAE,MAAQ5B,EAAE,GAAI,CAAE4B,EAAE,MAAQ5B,EAAE,GAAI4B,EAAE,IAAI,KAAKK,CAAE,EAAG,KAAO,CAC9DjC,EAAE,IAAI4B,EAAE,IAAI,IAAI,EACpBA,EAAE,KAAK,IAAI,EAAG,QACtB,CACAK,EAAKN,EAAK,KAAKZ,EAASa,CAAC,CAC7B,OAASzB,EAAP,CAAY8B,EAAK,CAAC,EAAG9B,CAAC,EAAG2B,EAAI,CAAG,QAAE,CAAUD,EAAI7B,EAAI,CAAG,CACzD,GAAIiC,EAAG,GAAK,EAAG,MAAMA,EAAG,GAAI,MAAO,CAAE,MAAOA,EAAG,GAAKA,EAAG,GAAK,OAAQ,KAAM,EAAK,CACnF,CACJ,EAEA7D,GAAe,SAAS8D,EAAG,EAAG,CAC1B,QAASpC,KAAKoC,EAAOpC,IAAM,WAAa,CAAC,OAAO,UAAU,eAAe,KAAK,EAAGA,CAAC,GAAGX,GAAgB,EAAG+C,EAAGpC,CAAC,CAChH,EAEAX,GAAkB,OAAO,OAAU,SAASgD,EAAGD,EAAGE,EAAGC,EAAI,CACjDA,IAAO,SAAWA,EAAKD,GAC3B,OAAO,eAAeD,EAAGE,EAAI,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,OAAOH,EAAEE,EAAI,CAAE,CAAC,CACvF,EAAM,SAASD,EAAGD,EAAGE,EAAGC,EAAI,CACpBA,IAAO,SAAWA,EAAKD,GAC3BD,EAAEE,GAAMH,EAAEE,EACd,EAEA/D,GAAW,SAAU8D,EAAG,CACpB,IAAIlC,EAAI,OAAO,QAAW,YAAc,OAAO,SAAUiC,EAAIjC,GAAKkC,EAAElC,GAAIG,EAAI,EAC5E,GAAI8B,EAAG,OAAOA,EAAE,KAAKC,CAAC,EACtB,GAAIA,GAAK,OAAOA,EAAE,QAAW,SAAU,MAAO,CAC1C,KAAM,UAAY,CACd,OAAIA,GAAK/B,GAAK+B,EAAE,SAAQA,EAAI,QACrB,CAAE,MAAOA,GAAKA,EAAE/B,KAAM,KAAM,CAAC+B,CAAE,CAC1C,CACJ,EACA,MAAM,IAAI,UAAUlC,EAAI,0BAA4B,iCAAiC,CACzF,EAEA3B,GAAS,SAAU6D,EAAGjC,EAAG,CACrB,IAAIgC,EAAI,OAAO,QAAW,YAAcC,EAAE,OAAO,UACjD,GAAI,CAACD,EAAG,OAAOC,EACf,IAAI/B,EAAI8B,EAAE,KAAKC,CAAC,EAAGzB,EAAG4B,EAAK,CAAC,EAAGnC,EAC/B,GAAI,CACA,MAAQD,IAAM,QAAUA,KAAM,IAAM,EAAEQ,EAAIN,EAAE,KAAK,GAAG,MAAMkC,EAAG,KAAK5B,EAAE,KAAK,CAC7E,OACO6B,EAAP,CAAgBpC,EAAI,CAAE,MAAOoC,CAAM,CAAG,QACtC,CACI,GAAI,CACI7B,GAAK,CAACA,EAAE,OAASwB,EAAI9B,EAAE,SAAY8B,EAAE,KAAK9B,CAAC,CACnD,QACA,CAAU,GAAID,EAAG,MAAMA,EAAE,KAAO,CACpC,CACA,OAAOmC,CACX,EAGA/D,GAAW,UAAY,CACnB,QAAS+D,EAAK,CAAC,EAAGlC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAC3CkC,EAAKA,EAAG,OAAOhE,GAAO,UAAU8B,EAAE,CAAC,EACvC,OAAOkC,CACX,EAGA9D,GAAiB,UAAY,CACzB,QAASyB,EAAI,EAAGG,EAAI,EAAGoC,EAAK,UAAU,OAAQpC,EAAIoC,EAAIpC,IAAKH,GAAK,UAAUG,GAAG,OAC7E,QAASM,EAAI,MAAMT,CAAC,EAAGmC,EAAI,EAAGhC,EAAI,EAAGA,EAAIoC,EAAIpC,IACzC,QAASqC,EAAI,UAAUrC,GAAIsC,EAAI,EAAGC,EAAKF,EAAE,OAAQC,EAAIC,EAAID,IAAKN,IAC1D1B,EAAE0B,GAAKK,EAAEC,GACjB,OAAOhC,CACX,EAEAjC,GAAgB,SAAUmE,EAAIC,EAAMC,EAAM,CACtC,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAAS1C,EAAI,EAAG2C,EAAIF,EAAK,OAAQP,EAAIlC,EAAI2C,EAAG3C,KACxEkC,GAAM,EAAElC,KAAKyC,MACRP,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKO,EAAM,EAAGzC,CAAC,GACnDkC,EAAGlC,GAAKyC,EAAKzC,IAGrB,OAAOwC,EAAG,OAAON,GAAM,MAAM,UAAU,MAAM,KAAKO,CAAI,CAAC,CAC3D,EAEAnE,GAAU,SAAUe,EAAG,CACnB,OAAO,gBAAgBf,IAAW,KAAK,EAAIe,EAAG,MAAQ,IAAIf,GAAQe,CAAC,CACvE,EAEAd,GAAmB,SAAUoC,EAASC,EAAYE,EAAW,CACzD,GAAI,CAAC,OAAO,cAAe,MAAM,IAAI,UAAU,sCAAsC,EACrF,IAAIa,EAAIb,EAAU,MAAMH,EAASC,GAAc,CAAC,CAAC,EAAGZ,EAAG4C,EAAI,CAAC,EAC5D,OAAO5C,EAAI,CAAC,EAAG4B,EAAK,MAAM,EAAGA,EAAK,OAAO,EAAGA,EAAK,QAAQ,EAAG5B,EAAE,OAAO,eAAiB,UAAY,CAAE,OAAO,IAAM,EAAGA,EACpH,SAAS4B,EAAK9B,EAAG,CAAM6B,EAAE7B,KAAIE,EAAEF,GAAK,SAAUT,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAUgD,EAAG5C,EAAG,CAAEmD,EAAE,KAAK,CAAC9C,EAAGT,EAAGgD,EAAG5C,CAAC,CAAC,EAAI,GAAKoD,EAAO/C,EAAGT,CAAC,CAAG,CAAC,CAAG,EAAG,CACzI,SAASwD,EAAO/C,EAAGT,EAAG,CAAE,GAAI,CAAE+B,EAAKO,EAAE7B,GAAGT,CAAC,CAAC,CAAG,OAASU,EAAP,CAAY+C,EAAOF,EAAE,GAAG,GAAI7C,CAAC,CAAG,CAAE,CACjF,SAASqB,EAAKd,EAAG,CAAEA,EAAE,iBAAiBhC,GAAU,QAAQ,QAAQgC,EAAE,MAAM,CAAC,EAAE,KAAKyC,EAAS7B,CAAM,EAAI4B,EAAOF,EAAE,GAAG,GAAItC,CAAC,CAAI,CACxH,SAASyC,EAAQ/B,EAAO,CAAE6B,EAAO,OAAQ7B,CAAK,CAAG,CACjD,SAASE,EAAOF,EAAO,CAAE6B,EAAO,QAAS7B,CAAK,CAAG,CACjD,SAAS8B,EAAOrB,EAAGpC,EAAG,CAAMoC,EAAEpC,CAAC,EAAGuD,EAAE,MAAM,EAAGA,EAAE,QAAQC,EAAOD,EAAE,GAAG,GAAIA,EAAE,GAAG,EAAE,CAAG,CACrF,EAEApE,GAAmB,SAAUuD,EAAG,CAC5B,IAAI/B,EAAGN,EACP,OAAOM,EAAI,CAAC,EAAG4B,EAAK,MAAM,EAAGA,EAAK,QAAS,SAAU7B,EAAG,CAAE,MAAMA,CAAG,CAAC,EAAG6B,EAAK,QAAQ,EAAG5B,EAAE,OAAO,UAAY,UAAY,CAAE,OAAO,IAAM,EAAGA,EAC1I,SAAS4B,EAAK9B,EAAG2B,EAAG,CAAEzB,EAAEF,GAAKiC,EAAEjC,GAAK,SAAUT,EAAG,CAAE,OAAQK,EAAI,CAACA,GAAK,CAAE,MAAOpB,GAAQyD,EAAEjC,GAAGT,CAAC,CAAC,EAAG,KAAMS,IAAM,QAAS,EAAI2B,EAAIA,EAAEpC,CAAC,EAAIA,CAAG,EAAIoC,CAAG,CAClJ,EAEAhD,GAAgB,SAAUsD,EAAG,CACzB,GAAI,CAAC,OAAO,cAAe,MAAM,IAAI,UAAU,sCAAsC,EACrF,IAAID,EAAIC,EAAE,OAAO,eAAgB,EACjC,OAAOD,EAAIA,EAAE,KAAKC,CAAC,GAAKA,EAAI,OAAO9D,IAAa,WAAaA,GAAS8D,CAAC,EAAIA,EAAE,OAAO,UAAU,EAAG,EAAI,CAAC,EAAGH,EAAK,MAAM,EAAGA,EAAK,OAAO,EAAGA,EAAK,QAAQ,EAAG,EAAE,OAAO,eAAiB,UAAY,CAAE,OAAO,IAAM,EAAG,GAC9M,SAASA,EAAK9B,EAAG,CAAE,EAAEA,GAAKiC,EAAEjC,IAAM,SAAUT,EAAG,CAAE,OAAO,IAAI,QAAQ,SAAU4B,EAASC,EAAQ,CAAE7B,EAAI0C,EAAEjC,GAAGT,CAAC,EAAGyD,EAAO7B,EAASC,EAAQ7B,EAAE,KAAMA,EAAE,KAAK,CAAG,CAAC,CAAG,CAAG,CAC/J,SAASyD,EAAO7B,EAASC,EAAQ1B,EAAGH,EAAG,CAAE,QAAQ,QAAQA,CAAC,EAAE,KAAK,SAASA,EAAG,CAAE4B,EAAQ,CAAE,MAAO5B,EAAG,KAAMG,CAAE,CAAC,CAAG,EAAG0B,CAAM,CAAG,CAC/H,EAEAxC,GAAuB,SAAUsE,EAAQC,EAAK,CAC1C,OAAI,OAAO,eAAkB,OAAO,eAAeD,EAAQ,MAAO,CAAE,MAAOC,CAAI,CAAC,EAAYD,EAAO,IAAMC,EAClGD,CACX,EAEA,IAAIE,EAAqB,OAAO,OAAU,SAASnB,EAAG1C,EAAG,CACrD,OAAO,eAAe0C,EAAG,UAAW,CAAE,WAAY,GAAM,MAAO1C,CAAE,CAAC,CACtE,EAAK,SAAS0C,EAAG1C,EAAG,CAChB0C,EAAE,QAAa1C,CACnB,EAEAV,GAAe,SAAUwE,EAAK,CAC1B,GAAIA,GAAOA,EAAI,WAAY,OAAOA,EAClC,IAAI7B,EAAS,CAAC,EACd,GAAI6B,GAAO,KAAM,QAASnB,KAAKmB,EAASnB,IAAM,WAAa,OAAO,UAAU,eAAe,KAAKmB,EAAKnB,CAAC,GAAGjD,GAAgBuC,EAAQ6B,EAAKnB,CAAC,EACvI,OAAAkB,EAAmB5B,EAAQ6B,CAAG,EACvB7B,CACX,EAEA1C,GAAkB,SAAUuE,EAAK,CAC7B,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,CAAI,CAC5D,EAEAtE,GAAyB,SAAUuE,EAAUC,EAAOC,EAAM7B,EAAG,CACzD,GAAI6B,IAAS,KAAO,CAAC7B,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAO4B,GAAU,WAAaD,IAAaC,GAAS,CAAC5B,EAAI,CAAC4B,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,0EAA0E,EACjL,OAAOE,IAAS,IAAM7B,EAAI6B,IAAS,IAAM7B,EAAE,KAAK2B,CAAQ,EAAI3B,EAAIA,EAAE,MAAQ4B,EAAM,IAAID,CAAQ,CAChG,EAEAtE,GAAyB,SAAUsE,EAAUC,EAAOrC,EAAOsC,EAAM7B,EAAG,CAChE,GAAI6B,IAAS,IAAK,MAAM,IAAI,UAAU,gCAAgC,EACtE,GAAIA,IAAS,KAAO,CAAC7B,EAAG,MAAM,IAAI,UAAU,+CAA+C,EAC3F,GAAI,OAAO4B,GAAU,WAAaD,IAAaC,GAAS,CAAC5B,EAAI,CAAC4B,EAAM,IAAID,CAAQ,EAAG,MAAM,IAAI,UAAU,yEAAyE,EAChL,OAAQE,IAAS,IAAM7B,EAAE,KAAK2B,EAAUpC,CAAK,EAAIS,EAAIA,EAAE,MAAQT,EAAQqC,EAAM,IAAID,EAAUpC,CAAK,EAAIA,CACxG,EAEA1B,EAAS,YAAa9B,EAAS,EAC/B8B,EAAS,WAAY7B,EAAQ,EAC7B6B,EAAS,SAAU5B,EAAM,EACzB4B,EAAS,aAAc3B,EAAU,EACjC2B,EAAS,UAAW1B,EAAO,EAC3B0B,EAAS,aAAczB,EAAU,EACjCyB,EAAS,YAAaxB,EAAS,EAC/BwB,EAAS,cAAevB,EAAW,EACnCuB,EAAS,eAAgBtB,EAAY,EACrCsB,EAAS,kBAAmBP,EAAe,EAC3CO,EAAS,WAAYrB,EAAQ,EAC7BqB,EAAS,SAAUpB,EAAM,EACzBoB,EAAS,WAAYnB,EAAQ,EAC7BmB,EAAS,iBAAkBlB,EAAc,EACzCkB,EAAS,gBAAiBjB,EAAa,EACvCiB,EAAS,UAAWhB,EAAO,EAC3BgB,EAAS,mBAAoBf,EAAgB,EAC7Ce,EAAS,mBAAoBd,EAAgB,EAC7Cc,EAAS,gBAAiBb,EAAa,EACvCa,EAAS,uBAAwBZ,EAAoB,EACrDY,EAAS,eAAgBX,EAAY,EACrCW,EAAS,kBAAmBV,EAAe,EAC3CU,EAAS,yBAA0BT,EAAsB,EACzDS,EAAS,yBAA0BR,EAAsB,CAC7D,CAAC,ICjTD,IAAAyE,GAAAC,GAAA,CAAAC,GAAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMC,SAA0CC,EAAMC,EAAS,CACtD,OAAOH,IAAY,UAAY,OAAOC,IAAW,SACnDA,GAAO,QAAUE,EAAQ,EAClB,OAAO,QAAW,YAAc,OAAO,IAC9C,OAAO,CAAC,EAAGA,CAAO,EACX,OAAOH,IAAY,SAC1BA,GAAQ,YAAiBG,EAAQ,EAEjCD,EAAK,YAAiBC,EAAQ,CAChC,GAAGH,GAAM,UAAW,CACpB,OAAiB,UAAW,CAClB,IAAII,EAAuB,CAE/B,IACC,SAASC,EAAyBC,EAAqBC,EAAqB,CAEnF,aAGAA,EAAoB,EAAED,EAAqB,CACzC,QAAW,UAAW,CAAE,OAAqBE,EAAW,CAC1D,CAAC,EAGD,IAAIC,EAAeF,EAAoB,GAAG,EACtCG,EAAoCH,EAAoB,EAAEE,CAAY,EAEtEE,EAASJ,EAAoB,GAAG,EAChCK,EAA8BL,EAAoB,EAAEI,CAAM,EAE1DE,EAAaN,EAAoB,GAAG,EACpCO,EAA8BP,EAAoB,EAAEM,CAAU,EAOlE,SAASE,EAAQC,EAAM,CACrB,GAAI,CACF,OAAO,SAAS,YAAYA,CAAI,CAClC,OAASC,EAAP,CACA,MAAO,EACT,CACF,CAUA,IAAIC,EAAqB,SAA4BC,EAAQ,CAC3D,IAAIC,EAAeN,EAAe,EAAEK,CAAM,EAC1C,OAAAJ,EAAQ,KAAK,EACNK,CACT,EAEiCC,EAAeH,EAOhD,SAASI,EAAkBC,EAAO,CAChC,IAAIC,EAAQ,SAAS,gBAAgB,aAAa,KAAK,IAAM,MACzDC,EAAc,SAAS,cAAc,UAAU,EAEnDA,EAAY,MAAM,SAAW,OAE7BA,EAAY,MAAM,OAAS,IAC3BA,EAAY,MAAM,QAAU,IAC5BA,EAAY,MAAM,OAAS,IAE3BA,EAAY,MAAM,SAAW,WAC7BA,EAAY,MAAMD,EAAQ,QAAU,QAAU,UAE9C,IAAIE,EAAY,OAAO,aAAe,SAAS,gBAAgB,UAC/D,OAAAD,EAAY,MAAM,IAAM,GAAG,OAAOC,EAAW,IAAI,EACjDD,EAAY,aAAa,WAAY,EAAE,EACvCA,EAAY,MAAQF,EACbE,CACT,CAYA,IAAIE,EAAiB,SAAwBJ,EAAOK,EAAS,CAC3D,IAAIH,EAAcH,EAAkBC,CAAK,EACzCK,EAAQ,UAAU,YAAYH,CAAW,EACzC,IAAIL,EAAeN,EAAe,EAAEW,CAAW,EAC/C,OAAAV,EAAQ,MAAM,EACdU,EAAY,OAAO,EACZL,CACT,EASIS,EAAsB,SAA6BV,EAAQ,CAC7D,IAAIS,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAChF,UAAW,SAAS,IACtB,EACIR,EAAe,GAEnB,OAAI,OAAOD,GAAW,SACpBC,EAAeO,EAAeR,EAAQS,CAAO,EACpCT,aAAkB,kBAAoB,CAAC,CAAC,OAAQ,SAAU,MAAO,MAAO,UAAU,EAAE,SAASA,GAAW,KAA4B,OAASA,EAAO,IAAI,EAEjKC,EAAeO,EAAeR,EAAO,MAAOS,CAAO,GAEnDR,EAAeN,EAAe,EAAEK,CAAM,EACtCJ,EAAQ,MAAM,GAGTK,CACT,EAEiCU,EAAgBD,EAEjD,SAASE,EAAQC,EAAK,CAA6B,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAAYD,EAAU,SAAiBC,EAAK,CAAE,OAAO,OAAOA,CAAK,EAAYD,EAAU,SAAiBC,EAAK,CAAE,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAAK,EAAYD,EAAQC,CAAG,CAAG,CAUzX,IAAIC,GAAyB,UAAkC,CAC7D,IAAIL,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAAC,EAE/EM,EAAkBN,EAAQ,OAC1BO,EAASD,IAAoB,OAAS,OAASA,EAC/CE,EAAYR,EAAQ,UACpBT,EAASS,EAAQ,OACjBS,GAAOT,EAAQ,KAEnB,GAAIO,IAAW,QAAUA,IAAW,MAClC,MAAM,IAAI,MAAM,oDAAoD,EAItE,GAAIhB,IAAW,OACb,GAAIA,GAAUY,EAAQZ,CAAM,IAAM,UAAYA,EAAO,WAAa,EAAG,CACnE,GAAIgB,IAAW,QAAUhB,EAAO,aAAa,UAAU,EACrD,MAAM,IAAI,MAAM,mFAAmF,EAGrG,GAAIgB,IAAW,QAAUhB,EAAO,aAAa,UAAU,GAAKA,EAAO,aAAa,UAAU,GACxF,MAAM,IAAI,MAAM,uGAAwG,CAE5H,KACE,OAAM,IAAI,MAAM,6CAA6C,EAKjE,GAAIkB,GACF,OAAOP,EAAaO,GAAM,CACxB,UAAWD,CACb,CAAC,EAIH,GAAIjB,EACF,OAAOgB,IAAW,MAAQd,EAAYF,CAAM,EAAIW,EAAaX,EAAQ,CACnE,UAAWiB,CACb,CAAC,CAEL,EAEiCE,GAAmBL,GAEpD,SAASM,GAAiBP,EAAK,CAA6B,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAAYO,GAAmB,SAAiBP,EAAK,CAAE,OAAO,OAAOA,CAAK,EAAYO,GAAmB,SAAiBP,EAAK,CAAE,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAAK,EAAYO,GAAiBP,CAAG,CAAG,CAE7Z,SAASQ,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAK,CAExJ,SAASC,GAAkBxB,EAAQyB,EAAO,CAAE,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAe3B,EAAQ2B,EAAW,IAAKA,CAAU,CAAG,CAAE,CAE5T,SAASC,GAAaL,EAAaM,EAAYC,EAAa,CAAE,OAAID,GAAYL,GAAkBD,EAAY,UAAWM,CAAU,EAAOC,GAAaN,GAAkBD,EAAaO,CAAW,EAAUP,CAAa,CAEtN,SAASQ,GAAUC,EAAUC,EAAY,CAAE,GAAI,OAAOA,GAAe,YAAcA,IAAe,KAAQ,MAAM,IAAI,UAAU,oDAAoD,EAAKD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CAAE,YAAa,CAAE,MAAOD,EAAU,SAAU,GAAM,aAAc,EAAK,CAAE,CAAC,EAAOC,GAAYC,GAAgBF,EAAUC,CAAU,CAAG,CAEhY,SAASC,GAAgBC,EAAGC,EAAG,CAAE,OAAAF,GAAkB,OAAO,gBAAkB,SAAyBC,EAAGC,EAAG,CAAE,OAAAD,EAAE,UAAYC,EAAUD,CAAG,EAAUD,GAAgBC,EAAGC,CAAC,CAAG,CAEzK,SAASC,GAAaC,EAAS,CAAE,IAAIC,EAA4BC,GAA0B,EAAG,OAAO,UAAgC,CAAE,IAAIC,EAAQC,GAAgBJ,CAAO,EAAGK,EAAQ,GAAIJ,EAA2B,CAAE,IAAIK,EAAYF,GAAgB,IAAI,EAAE,YAAaC,EAAS,QAAQ,UAAUF,EAAO,UAAWG,CAAS,CAAG,MAASD,EAASF,EAAM,MAAM,KAAM,SAAS,EAAK,OAAOI,GAA2B,KAAMF,CAAM,CAAG,CAAG,CAExa,SAASE,GAA2BC,EAAMC,EAAM,CAAE,OAAIA,IAAS3B,GAAiB2B,CAAI,IAAM,UAAY,OAAOA,GAAS,YAAsBA,EAAeC,GAAuBF,CAAI,CAAG,CAEzL,SAASE,GAAuBF,EAAM,CAAE,GAAIA,IAAS,OAAU,MAAM,IAAI,eAAe,2DAA2D,EAAK,OAAOA,CAAM,CAErK,SAASN,IAA4B,CAA0E,GAApE,OAAO,SAAY,aAAe,CAAC,QAAQ,WAA6B,QAAQ,UAAU,KAAM,MAAO,GAAO,GAAI,OAAO,OAAU,WAAY,MAAO,GAAM,GAAI,CAAE,YAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,KAAM,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EAAU,EAAM,OAASS,EAAP,CAAY,MAAO,EAAO,CAAE,CAEnU,SAASP,GAAgBP,EAAG,CAAE,OAAAO,GAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyBP,EAAG,CAAE,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAAG,EAAUO,GAAgBP,CAAC,CAAG,CAa5M,SAASe,GAAkBC,EAAQC,EAAS,CAC1C,IAAIC,EAAY,kBAAkB,OAAOF,CAAM,EAE/C,GAAI,EAACC,EAAQ,aAAaC,CAAS,EAInC,OAAOD,EAAQ,aAAaC,CAAS,CACvC,CAOA,IAAIC,GAAyB,SAAUC,EAAU,CAC/CxB,GAAUuB,EAAWC,CAAQ,EAE7B,IAAIC,EAASnB,GAAaiB,CAAS,EAMnC,SAASA,EAAUG,EAAShD,EAAS,CACnC,IAAIiD,EAEJ,OAAArC,GAAgB,KAAMiC,CAAS,EAE/BI,EAAQF,EAAO,KAAK,IAAI,EAExBE,EAAM,eAAejD,CAAO,EAE5BiD,EAAM,YAAYD,CAAO,EAElBC,CACT,CAQA,OAAA9B,GAAa0B,EAAW,CAAC,CACvB,IAAK,iBACL,MAAO,UAA0B,CAC/B,IAAI7C,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAAC,EACnF,KAAK,OAAS,OAAOA,EAAQ,QAAW,WAAaA,EAAQ,OAAS,KAAK,cAC3E,KAAK,OAAS,OAAOA,EAAQ,QAAW,WAAaA,EAAQ,OAAS,KAAK,cAC3E,KAAK,KAAO,OAAOA,EAAQ,MAAS,WAAaA,EAAQ,KAAO,KAAK,YACrE,KAAK,UAAYW,GAAiBX,EAAQ,SAAS,IAAM,SAAWA,EAAQ,UAAY,SAAS,IACnG,CAMF,EAAG,CACD,IAAK,cACL,MAAO,SAAqBgD,EAAS,CACnC,IAAIE,EAAS,KAEb,KAAK,SAAWlE,EAAe,EAAEgE,EAAS,QAAS,SAAUR,GAAG,CAC9D,OAAOU,EAAO,QAAQV,EAAC,CACzB,CAAC,CACH,CAMF,EAAG,CACD,IAAK,UACL,MAAO,SAAiBA,EAAG,CACzB,IAAIQ,EAAUR,EAAE,gBAAkBA,EAAE,cAChCjC,GAAS,KAAK,OAAOyC,CAAO,GAAK,OACjCvC,GAAOC,GAAgB,CACzB,OAAQH,GACR,UAAW,KAAK,UAChB,OAAQ,KAAK,OAAOyC,CAAO,EAC3B,KAAM,KAAK,KAAKA,CAAO,CACzB,CAAC,EAED,KAAK,KAAKvC,GAAO,UAAY,QAAS,CACpC,OAAQF,GACR,KAAME,GACN,QAASuC,EACT,eAAgB,UAA0B,CACpCA,GACFA,EAAQ,MAAM,EAGhB,OAAO,aAAa,EAAE,gBAAgB,CACxC,CACF,CAAC,CACH,CAMF,EAAG,CACD,IAAK,gBACL,MAAO,SAAuBA,EAAS,CACrC,OAAOP,GAAkB,SAAUO,CAAO,CAC5C,CAMF,EAAG,CACD,IAAK,gBACL,MAAO,SAAuBA,EAAS,CACrC,IAAIG,EAAWV,GAAkB,SAAUO,CAAO,EAElD,GAAIG,EACF,OAAO,SAAS,cAAcA,CAAQ,CAE1C,CAQF,EAAG,CACD,IAAK,cAML,MAAO,SAAqBH,EAAS,CACnC,OAAOP,GAAkB,OAAQO,CAAO,CAC1C,CAKF,EAAG,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,KAAK,SAAS,QAAQ,CACxB,CACF,CAAC,EAAG,CAAC,CACH,IAAK,OACL,MAAO,SAAczD,EAAQ,CAC3B,IAAIS,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAChF,UAAW,SAAS,IACtB,EACA,OAAOE,EAAaX,EAAQS,CAAO,CACrC,CAOF,EAAG,CACD,IAAK,MACL,MAAO,SAAaT,EAAQ,CAC1B,OAAOE,EAAYF,CAAM,CAC3B,CAOF,EAAG,CACD,IAAK,cACL,MAAO,UAAuB,CAC5B,IAAIgB,EAAS,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAAC,OAAQ,KAAK,EAC3F6C,EAAU,OAAO7C,GAAW,SAAW,CAACA,CAAM,EAAIA,EAClD8C,GAAU,CAAC,CAAC,SAAS,sBACzB,OAAAD,EAAQ,QAAQ,SAAU7C,GAAQ,CAChC8C,GAAUA,IAAW,CAAC,CAAC,SAAS,sBAAsB9C,EAAM,CAC9D,CAAC,EACM8C,EACT,CACF,CAAC,CAAC,EAEKR,CACT,EAAG/D,EAAqB,CAAE,EAEOF,GAAaiE,EAExC,EAEA,IACC,SAASxE,EAAQ,CAExB,IAAIiF,EAAqB,EAKzB,GAAI,OAAO,SAAY,aAAe,CAAC,QAAQ,UAAU,QAAS,CAC9D,IAAIC,EAAQ,QAAQ,UAEpBA,EAAM,QAAUA,EAAM,iBACNA,EAAM,oBACNA,EAAM,mBACNA,EAAM,kBACNA,EAAM,qBAC1B,CASA,SAASC,EAASb,EAASQ,EAAU,CACjC,KAAOR,GAAWA,EAAQ,WAAaW,GAAoB,CACvD,GAAI,OAAOX,EAAQ,SAAY,YAC3BA,EAAQ,QAAQQ,CAAQ,EAC1B,OAAOR,EAETA,EAAUA,EAAQ,UACtB,CACJ,CAEAtE,EAAO,QAAUmF,CAGX,EAEA,IACC,SAASnF,EAAQoF,EAA0B9E,EAAqB,CAEvE,IAAI6E,EAAU7E,EAAoB,GAAG,EAYrC,SAAS+E,EAAUf,EAASQ,EAAU/D,EAAMuE,EAAUC,EAAY,CAC9D,IAAIC,EAAaC,EAAS,MAAM,KAAM,SAAS,EAE/C,OAAAnB,EAAQ,iBAAiBvD,EAAMyE,EAAYD,CAAU,EAE9C,CACH,QAAS,UAAW,CAChBjB,EAAQ,oBAAoBvD,EAAMyE,EAAYD,CAAU,CAC5D,CACJ,CACJ,CAYA,SAASG,EAASC,EAAUb,EAAU/D,EAAMuE,EAAUC,EAAY,CAE9D,OAAI,OAAOI,EAAS,kBAAqB,WAC9BN,EAAU,MAAM,KAAM,SAAS,EAItC,OAAOtE,GAAS,WAGTsE,EAAU,KAAK,KAAM,QAAQ,EAAE,MAAM,KAAM,SAAS,GAI3D,OAAOM,GAAa,WACpBA,EAAW,SAAS,iBAAiBA,CAAQ,GAI1C,MAAM,UAAU,IAAI,KAAKA,EAAU,SAAUrB,EAAS,CACzD,OAAOe,EAAUf,EAASQ,EAAU/D,EAAMuE,EAAUC,CAAU,CAClE,CAAC,EACL,CAWA,SAASE,EAASnB,EAASQ,EAAU/D,EAAMuE,EAAU,CACjD,OAAO,SAASnB,EAAG,CACfA,EAAE,eAAiBgB,EAAQhB,EAAE,OAAQW,CAAQ,EAEzCX,EAAE,gBACFmB,EAAS,KAAKhB,EAASH,CAAC,CAEhC,CACJ,CAEAnE,EAAO,QAAU0F,CAGX,EAEA,IACC,SAAStF,EAAyBL,EAAS,CAQlDA,EAAQ,KAAO,SAASuB,EAAO,CAC3B,OAAOA,IAAU,QACVA,aAAiB,aACjBA,EAAM,WAAa,CAC9B,EAQAvB,EAAQ,SAAW,SAASuB,EAAO,CAC/B,IAAIP,EAAO,OAAO,UAAU,SAAS,KAAKO,CAAK,EAE/C,OAAOA,IAAU,SACTP,IAAS,qBAAuBA,IAAS,4BACzC,WAAYO,IACZA,EAAM,SAAW,GAAKvB,EAAQ,KAAKuB,EAAM,EAAE,EACvD,EAQAvB,EAAQ,OAAS,SAASuB,EAAO,CAC7B,OAAO,OAAOA,GAAU,UACjBA,aAAiB,MAC5B,EAQAvB,EAAQ,GAAK,SAASuB,EAAO,CACzB,IAAIP,EAAO,OAAO,UAAU,SAAS,KAAKO,CAAK,EAE/C,OAAOP,IAAS,mBACpB,CAGM,EAEA,IACC,SAASf,EAAQoF,EAA0B9E,EAAqB,CAEvE,IAAIsF,EAAKtF,EAAoB,GAAG,EAC5BoF,EAAWpF,EAAoB,GAAG,EAWtC,SAASI,EAAOQ,EAAQH,EAAMuE,EAAU,CACpC,GAAI,CAACpE,GAAU,CAACH,GAAQ,CAACuE,EACrB,MAAM,IAAI,MAAM,4BAA4B,EAGhD,GAAI,CAACM,EAAG,OAAO7E,CAAI,EACf,MAAM,IAAI,UAAU,kCAAkC,EAG1D,GAAI,CAAC6E,EAAG,GAAGN,CAAQ,EACf,MAAM,IAAI,UAAU,mCAAmC,EAG3D,GAAIM,EAAG,KAAK1E,CAAM,EACd,OAAO2E,EAAW3E,EAAQH,EAAMuE,CAAQ,EAEvC,GAAIM,EAAG,SAAS1E,CAAM,EACvB,OAAO4E,EAAe5E,EAAQH,EAAMuE,CAAQ,EAE3C,GAAIM,EAAG,OAAO1E,CAAM,EACrB,OAAO6E,EAAe7E,EAAQH,EAAMuE,CAAQ,EAG5C,MAAM,IAAI,UAAU,2EAA2E,CAEvG,CAWA,SAASO,EAAWG,EAAMjF,EAAMuE,EAAU,CACtC,OAAAU,EAAK,iBAAiBjF,EAAMuE,CAAQ,EAE7B,CACH,QAAS,UAAW,CAChBU,EAAK,oBAAoBjF,EAAMuE,CAAQ,CAC3C,CACJ,CACJ,CAWA,SAASQ,EAAeG,EAAUlF,EAAMuE,EAAU,CAC9C,aAAM,UAAU,QAAQ,KAAKW,EAAU,SAASD,EAAM,CAClDA,EAAK,iBAAiBjF,EAAMuE,CAAQ,CACxC,CAAC,EAEM,CACH,QAAS,UAAW,CAChB,MAAM,UAAU,QAAQ,KAAKW,EAAU,SAASD,EAAM,CAClDA,EAAK,oBAAoBjF,EAAMuE,CAAQ,CAC3C,CAAC,CACL,CACJ,CACJ,CAWA,SAASS,EAAejB,EAAU/D,EAAMuE,EAAU,CAC9C,OAAOI,EAAS,SAAS,KAAMZ,EAAU/D,EAAMuE,CAAQ,CAC3D,CAEAtF,EAAO,QAAUU,CAGX,EAEA,IACC,SAASV,EAAQ,CAExB,SAASkG,EAAO5B,EAAS,CACrB,IAAInD,EAEJ,GAAImD,EAAQ,WAAa,SACrBA,EAAQ,MAAM,EAEdnD,EAAemD,EAAQ,cAElBA,EAAQ,WAAa,SAAWA,EAAQ,WAAa,WAAY,CACtE,IAAI6B,EAAa7B,EAAQ,aAAa,UAAU,EAE3C6B,GACD7B,EAAQ,aAAa,WAAY,EAAE,EAGvCA,EAAQ,OAAO,EACfA,EAAQ,kBAAkB,EAAGA,EAAQ,MAAM,MAAM,EAE5C6B,GACD7B,EAAQ,gBAAgB,UAAU,EAGtCnD,EAAemD,EAAQ,KAC3B,KACK,CACGA,EAAQ,aAAa,iBAAiB,GACtCA,EAAQ,MAAM,EAGlB,IAAI8B,EAAY,OAAO,aAAa,EAChCC,EAAQ,SAAS,YAAY,EAEjCA,EAAM,mBAAmB/B,CAAO,EAChC8B,EAAU,gBAAgB,EAC1BA,EAAU,SAASC,CAAK,EAExBlF,EAAeiF,EAAU,SAAS,CACtC,CAEA,OAAOjF,CACX,CAEAnB,EAAO,QAAUkG,CAGX,EAEA,IACC,SAASlG,EAAQ,CAExB,SAASsG,GAAK,CAGd,CAEAA,EAAE,UAAY,CACZ,GAAI,SAAUC,EAAMjB,EAAUkB,EAAK,CACjC,IAAIrC,EAAI,KAAK,IAAM,KAAK,EAAI,CAAC,GAE7B,OAACA,EAAEoC,KAAUpC,EAAEoC,GAAQ,CAAC,IAAI,KAAK,CAC/B,GAAIjB,EACJ,IAAKkB,CACP,CAAC,EAEM,IACT,EAEA,KAAM,SAAUD,EAAMjB,EAAUkB,EAAK,CACnC,IAAIxC,EAAO,KACX,SAASyB,GAAY,CACnBzB,EAAK,IAAIuC,EAAMd,CAAQ,EACvBH,EAAS,MAAMkB,EAAK,SAAS,CAC/B,CAEA,OAAAf,EAAS,EAAIH,EACN,KAAK,GAAGiB,EAAMd,EAAUe,CAAG,CACpC,EAEA,KAAM,SAAUD,EAAM,CACpB,IAAIE,EAAO,CAAC,EAAE,MAAM,KAAK,UAAW,CAAC,EACjCC,IAAW,KAAK,IAAM,KAAK,EAAI,CAAC,IAAIH,IAAS,CAAC,GAAG,MAAM,EACvD3D,EAAI,EACJ+D,EAAMD,EAAO,OAEjB,IAAK9D,EAAGA,EAAI+D,EAAK/D,IACf8D,EAAO9D,GAAG,GAAG,MAAM8D,EAAO9D,GAAG,IAAK6D,CAAI,EAGxC,OAAO,IACT,EAEA,IAAK,SAAUF,EAAMjB,EAAU,CAC7B,IAAInB,EAAI,KAAK,IAAM,KAAK,EAAI,CAAC,GACzByC,EAAOzC,EAAEoC,GACTM,EAAa,CAAC,EAElB,GAAID,GAAQtB,EACV,QAAS1C,EAAI,EAAG+D,EAAMC,EAAK,OAAQhE,EAAI+D,EAAK/D,IACtCgE,EAAKhE,GAAG,KAAO0C,GAAYsB,EAAKhE,GAAG,GAAG,IAAM0C,GAC9CuB,EAAW,KAAKD,EAAKhE,EAAE,EAQ7B,OAACiE,EAAW,OACR1C,EAAEoC,GAAQM,EACV,OAAO1C,EAAEoC,GAEN,IACT,CACF,EAEAvG,EAAO,QAAUsG,EACjBtG,EAAO,QAAQ,YAAcsG,CAGvB,CAEI,EAGIQ,EAA2B,CAAC,EAGhC,SAASxG,EAAoByG,EAAU,CAEtC,GAAGD,EAAyBC,GAC3B,OAAOD,EAAyBC,GAAU,QAG3C,IAAI/G,EAAS8G,EAAyBC,GAAY,CAGjD,QAAS,CAAC,CACX,EAGA,OAAA5G,EAAoB4G,GAAU/G,EAAQA,EAAO,QAASM,CAAmB,EAGlEN,EAAO,OACf,CAIA,OAAC,UAAW,CAEXM,EAAoB,EAAI,SAASN,EAAQ,CACxC,IAAIgH,EAAShH,GAAUA,EAAO,WAC7B,UAAW,CAAE,OAAOA,EAAO,OAAY,EACvC,UAAW,CAAE,OAAOA,CAAQ,EAC7B,OAAAM,EAAoB,EAAE0G,EAAQ,CAAE,EAAGA,CAAO,CAAC,EACpCA,CACR,CACD,EAAE,EAGD,UAAW,CAEX1G,EAAoB,EAAI,SAASP,EAASkH,EAAY,CACrD,QAAQC,KAAOD,EACX3G,EAAoB,EAAE2G,EAAYC,CAAG,GAAK,CAAC5G,EAAoB,EAAEP,EAASmH,CAAG,GAC/E,OAAO,eAAenH,EAASmH,EAAK,CAAE,WAAY,GAAM,IAAKD,EAAWC,EAAK,CAAC,CAGjF,CACD,EAAE,EAGD,UAAW,CACX5G,EAAoB,EAAI,SAASyB,EAAKoF,EAAM,CAAE,OAAO,OAAO,UAAU,eAAe,KAAKpF,EAAKoF,CAAI,CAAG,CACvG,EAAE,EAMK7G,EAAoB,GAAG,CAC/B,EAAG,EACX,OACD,CAAC,ICz3BD,IAAA8G,GAAAC,GAAA,CAAAC,GAAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAeA,IAAIC,GAAkB,UAOtBD,GAAO,QAAUE,GAUjB,SAASA,GAAWC,EAAQ,CAC1B,IAAIC,EAAM,GAAKD,EACXE,EAAQJ,GAAgB,KAAKG,CAAG,EAEpC,GAAI,CAACC,EACH,OAAOD,EAGT,IAAIE,EACAC,EAAO,GACPC,EAAQ,EACRC,EAAY,EAEhB,IAAKD,EAAQH,EAAM,MAAOG,EAAQJ,EAAI,OAAQI,IAAS,CACrD,OAAQJ,EAAI,WAAWI,CAAK,EAAG,CAC7B,IAAK,IACHF,EAAS,SACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,QACE,QACJ,CAEIG,IAAcD,IAChBD,GAAQH,EAAI,UAAUK,EAAWD,CAAK,GAGxCC,EAAYD,EAAQ,EACpBD,GAAQD,CACV,CAEA,OAAOG,IAAcD,EACjBD,EAAOH,EAAI,UAAUK,EAAWD,CAAK,EACrCD,CACN,IC7EA,MAAM,UAAU,MAAM,OAAO,eAAe,MAAM,UAAU,OAAO,CAAC,aAAa,GAAG,MAAM,SAASG,GAAG,CAAC,IAAI,EAAE,MAAM,UAAU,EAAE,EAAE,EAAE,OAAO,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,UAAU,OAAO,KAAK,KAAK,SAASC,EAAEC,EAAE,CAAC,OAAO,MAAM,QAAQA,CAAC,EAAED,EAAE,KAAK,MAAMA,EAAED,EAAE,KAAKE,EAAE,EAAE,CAAC,CAAC,EAAED,EAAE,KAAKC,CAAC,EAAED,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,UAAU,SAAS,OAAO,eAAe,MAAM,UAAU,UAAU,CAAC,aAAa,GAAG,MAAM,SAASD,EAAE,CAAC,OAAO,MAAM,UAAU,IAAI,MAAM,KAAK,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,ECuBxf,IAAAG,GAAO,SCvBP,KAAK,QAAQ,KAAK,MAAM,SAAS,EAAEC,EAAE,CAAC,OAAOA,EAAEA,GAAG,CAAC,EAAE,IAAI,QAAQ,SAASC,EAAEC,EAAE,CAAC,IAAIC,EAAE,IAAI,eAAeC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAOJ,EAAE,OAAO,IAAI,IAAjB,EAAoB,WAAWA,EAAE,WAAW,OAAOA,EAAE,OAAO,IAAIA,EAAE,YAAY,KAAK,UAAU,CAAC,OAAO,QAAQ,QAAQA,EAAE,YAAY,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,QAAQ,QAAQA,EAAE,YAAY,EAAE,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,QAAQ,QAAQ,IAAI,KAAK,CAACA,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAMI,EAAE,QAAQ,CAAC,KAAK,UAAU,CAAC,OAAOH,CAAC,EAAE,QAAQ,UAAU,CAAC,OAAOC,CAAC,EAAE,IAAI,SAASG,EAAE,CAAC,OAAOF,EAAEE,EAAE,YAAY,EAAE,EAAE,IAAI,SAASA,EAAE,CAAC,OAAOA,EAAE,YAAY,IAAIF,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQG,KAAKN,EAAE,KAAKH,EAAE,QAAQ,MAAM,EAAE,EAAE,EAAEG,EAAE,OAAO,UAAU,CAACA,EAAE,sBAAsB,EAAE,QAAQ,+BAA+B,SAASK,EAAER,EAAEC,EAAE,CAACG,EAAE,KAAKJ,EAAEA,EAAE,YAAY,CAAC,EAAEK,EAAE,KAAK,CAACL,EAAEC,CAAC,CAAC,EAAEK,EAAEN,GAAGM,EAAEN,GAAGM,EAAEN,GAAG,IAAIC,EAAEA,CAAC,CAAC,EAAEA,EAAEM,EAAE,CAAC,CAAC,EAAEJ,EAAE,QAAQD,EAAEC,EAAE,gBAA2BH,EAAE,aAAb,UAAyBA,EAAE,QAAQG,EAAE,iBAAiBM,EAAET,EAAE,QAAQS,EAAE,EAAEN,EAAE,KAAKH,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,GDyBj5B,IAAAU,GAAO,SEzBP,IAAAC,GAAkB,WACZ,CACF,UAAAC,GACA,SAAAC,GACA,OAAAC,GACA,WAAAC,GACA,QAAAC,GACA,WAAAC,GACA,UAAAC,GACA,YAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,SAAAC,GACA,OAAAC,EACA,SAAAC,GACA,eAAAC,GACA,cAAAC,EACA,QAAAC,GACA,iBAAAC,GACA,iBAAAC,GACA,cAAAC,GACA,qBAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,uBAAAC,GACA,uBAAAC,EACJ,EAAI,GAAAC,QCtBE,SAAUC,EAAWC,EAAU,CACnC,OAAO,OAAOA,GAAU,UAC1B,CCGM,SAAUC,GAAoBC,EAAgC,CAClE,IAAMC,EAAS,SAACC,EAAa,CAC3B,MAAM,KAAKA,CAAQ,EACnBA,EAAS,MAAQ,IAAI,MAAK,EAAG,KAC/B,EAEMC,EAAWH,EAAWC,CAAM,EAClC,OAAAE,EAAS,UAAY,OAAO,OAAO,MAAM,SAAS,EAClDA,EAAS,UAAU,YAAcA,EAC1BA,CACT,CCDO,IAAMC,GAA+CC,GAC1D,SAACC,EAAM,CACL,OAAA,SAA4CC,EAA0B,CACpED,EAAO,IAAI,EACX,KAAK,QAAUC,EACRA,EAAO,OAAM;EACxBA,EAAO,IAAI,SAACC,EAAKC,EAAC,CAAK,OAAGA,EAAI,EAAC,KAAKD,EAAI,SAAQ,CAAzB,CAA6B,EAAE,KAAK;GAAM,EACzD,GACJ,KAAK,KAAO,sBACZ,KAAK,OAASD,CAChB,CARA,CAQC,ECvBC,SAAUG,GAAaC,EAA6BC,EAAO,CAC/D,GAAID,EAAK,CACP,IAAME,EAAQF,EAAI,QAAQC,CAAI,EAC9B,GAAKC,GAASF,EAAI,OAAOE,EAAO,CAAC,EAErC,CCOA,IAAAC,GAAA,UAAA,CAyBE,SAAAA,EAAoBC,EAA4B,CAA5B,KAAA,gBAAAA,EAdb,KAAA,OAAS,GAER,KAAA,WAAmD,KAMnD,KAAA,YAAqD,IAMV,CAQnD,OAAAD,EAAA,UAAA,YAAA,UAAA,aACME,EAEJ,GAAI,CAAC,KAAK,OAAQ,CAChB,KAAK,OAAS,GAGN,IAAAC,EAAe,KAAI,WAC3B,GAAIA,EAEF,GADA,KAAK,WAAa,KACd,MAAM,QAAQA,CAAU,MAC1B,QAAqBC,EAAAC,GAAAF,CAAU,EAAAG,EAAAF,EAAA,KAAA,EAAA,CAAAE,EAAA,KAAAA,EAAAF,EAAA,KAAA,EAAE,CAA5B,IAAMG,EAAMD,EAAA,MACfC,EAAO,OAAO,IAAI,yGAGpBJ,EAAW,OAAO,IAAI,EAIlB,IAAiBK,EAAqB,KAAI,gBAClD,GAAIC,EAAWD,CAAgB,EAC7B,GAAI,CACFA,EAAgB,QACTE,EAAP,CACAR,EAASQ,aAAaC,GAAsBD,EAAE,OAAS,CAACA,CAAC,EAIrD,IAAAE,EAAgB,KAAI,YAC5B,GAAIA,EAAa,CACf,KAAK,YAAc,SACnB,QAAwBC,EAAAR,GAAAO,CAAW,EAAAE,EAAAD,EAAA,KAAA,EAAA,CAAAC,EAAA,KAAAA,EAAAD,EAAA,KAAA,EAAE,CAAhC,IAAME,EAASD,EAAA,MAClB,GAAI,CACFE,GAAcD,CAAS,QAChBE,EAAP,CACAf,EAASA,GAAM,KAANA,EAAU,CAAA,EACfe,aAAeN,GACjBT,EAAMgB,EAAAA,EAAA,CAAA,EAAAC,EAAOjB,CAAM,CAAA,EAAAiB,EAAKF,EAAI,MAAM,CAAA,EAElCf,EAAO,KAAKe,CAAG,sGAMvB,GAAIf,EACF,MAAM,IAAIS,GAAoBT,CAAM,EAG1C,EAoBAF,EAAA,UAAA,IAAA,SAAIoB,EAAuB,OAGzB,GAAIA,GAAYA,IAAa,KAC3B,GAAI,KAAK,OAGPJ,GAAcI,CAAQ,MACjB,CACL,GAAIA,aAAoBpB,EAAc,CAGpC,GAAIoB,EAAS,QAAUA,EAAS,WAAW,IAAI,EAC7C,OAEFA,EAAS,WAAW,IAAI,GAEzB,KAAK,aAAcC,EAAA,KAAK,eAAW,MAAAA,IAAA,OAAAA,EAAI,CAAA,GAAI,KAAKD,CAAQ,EAG/D,EAOQpB,EAAA,UAAA,WAAR,SAAmBsB,EAAoB,CAC7B,IAAAnB,EAAe,KAAI,WAC3B,OAAOA,IAAemB,GAAW,MAAM,QAAQnB,CAAU,GAAKA,EAAW,SAASmB,CAAM,CAC1F,EASQtB,EAAA,UAAA,WAAR,SAAmBsB,EAAoB,CAC7B,IAAAnB,EAAe,KAAI,WAC3B,KAAK,WAAa,MAAM,QAAQA,CAAU,GAAKA,EAAW,KAAKmB,CAAM,EAAGnB,GAAcA,EAAa,CAACA,EAAYmB,CAAM,EAAIA,CAC5H,EAMQtB,EAAA,UAAA,cAAR,SAAsBsB,EAAoB,CAChC,IAAAnB,EAAe,KAAI,WACvBA,IAAemB,EACjB,KAAK,WAAa,KACT,MAAM,QAAQnB,CAAU,GACjCoB,GAAUpB,EAAYmB,CAAM,CAEhC,EAgBAtB,EAAA,UAAA,OAAA,SAAOoB,EAAsC,CACnC,IAAAR,EAAgB,KAAI,YAC5BA,GAAeW,GAAUX,EAAaQ,CAAQ,EAE1CA,aAAoBpB,GACtBoB,EAAS,cAAc,IAAI,CAE/B,EAlLcpB,EAAA,MAAS,UAAA,CACrB,IAAMwB,EAAQ,IAAIxB,EAClB,OAAAwB,EAAM,OAAS,GACRA,CACT,EAAE,EA+KJxB,GArLA,EAuLO,IAAMyB,GAAqBC,GAAa,MAEzC,SAAUC,GAAeC,EAAU,CACvC,OACEA,aAAiBF,IAChBE,GAAS,WAAYA,GAASC,EAAWD,EAAM,MAAM,GAAKC,EAAWD,EAAM,GAAG,GAAKC,EAAWD,EAAM,WAAW,CAEpH,CAEA,SAASE,GAAcC,EAAwC,CACzDF,EAAWE,CAAS,EACtBA,EAAS,EAETA,EAAU,YAAW,CAEzB,CChNO,IAAMC,GAAuB,CAClC,iBAAkB,KAClB,sBAAuB,KACvB,QAAS,OACT,sCAAuC,GACvC,yBAA0B,ICGrB,IAAMC,GAAmC,CAG9C,WAAA,SAAWC,EAAqBC,EAAgB,SAAEC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,EAAA,GAAA,UAAAA,GACxC,IAAAC,EAAaL,GAAe,SACpC,OAAIK,GAAQ,MAARA,EAAU,WACLA,EAAS,WAAU,MAAnBA,EAAQC,EAAA,CAAYL,EAASC,CAAO,EAAAK,EAAKJ,CAAI,CAAA,CAAA,EAE/C,WAAU,MAAA,OAAAG,EAAA,CAACL,EAASC,CAAO,EAAAK,EAAKJ,CAAI,CAAA,CAAA,CAC7C,EACA,aAAA,SAAaK,EAAM,CACT,IAAAH,EAAaL,GAAe,SACpC,QAAQK,GAAQ,KAAA,OAARA,EAAU,eAAgB,cAAcG,CAAa,CAC/D,EACA,SAAU,QCjBN,SAAUC,GAAqBC,EAAQ,CAC3CC,GAAgB,WAAW,UAAA,CACjB,IAAAC,EAAqBC,GAAM,iBACnC,GAAID,EAEFA,EAAiBF,CAAG,MAGpB,OAAMA,CAEV,CAAC,CACH,CCtBM,SAAUI,IAAI,CAAK,CCMlB,IAAMC,GAAyB,UAAA,CAAM,OAAAC,GAAmB,IAAK,OAAW,MAAS,CAA5C,EAAsE,EAO5G,SAAUC,GAAkBC,EAAU,CAC1C,OAAOF,GAAmB,IAAK,OAAWE,CAAK,CACjD,CAOM,SAAUC,GAAoBC,EAAQ,CAC1C,OAAOJ,GAAmB,IAAKI,EAAO,MAAS,CACjD,CAQM,SAAUJ,GAAmBK,EAAuBD,EAAYF,EAAU,CAC9E,MAAO,CACL,KAAIG,EACJ,MAAKD,EACL,MAAKF,EAET,CCrCA,IAAII,GAAuD,KASrD,SAAUC,GAAaC,EAAc,CACzC,GAAIC,GAAO,sCAAuC,CAChD,IAAMC,EAAS,CAACJ,GAKhB,GAJII,IACFJ,GAAU,CAAE,YAAa,GAAO,MAAO,IAAI,GAE7CE,EAAE,EACEE,EAAQ,CACJ,IAAAC,EAAyBL,GAAvBM,EAAWD,EAAA,YAAEE,EAAKF,EAAA,MAE1B,GADAL,GAAU,KACNM,EACF,MAAMC,QAMVL,EAAE,CAEN,CAMM,SAAUM,GAAaC,EAAQ,CAC/BN,GAAO,uCAAyCH,KAClDA,GAAQ,YAAc,GACtBA,GAAQ,MAAQS,EAEpB,CCrBA,IAAAC,GAAA,SAAAC,EAAA,CAAmCC,GAAAF,EAAAC,CAAA,EA6BjC,SAAAD,EAAYG,EAA6C,CAAzD,IAAAC,EACEH,EAAA,KAAA,IAAA,GAAO,KATC,OAAAG,EAAA,UAAqB,GAUzBD,GACFC,EAAK,YAAcD,EAGfE,GAAeF,CAAW,GAC5BA,EAAY,IAAIC,CAAI,GAGtBA,EAAK,YAAcE,IAEvB,CAzBO,OAAAN,EAAA,OAAP,SAAiBO,EAAwBC,EAA2BC,EAAqB,CACvF,OAAO,IAAIC,GAAeH,EAAMC,EAAOC,CAAQ,CACjD,EAgCAT,EAAA,UAAA,KAAA,SAAKW,EAAS,CACR,KAAK,UACPC,GAA0BC,GAAiBF,CAAK,EAAG,IAAI,EAEvD,KAAK,MAAMA,CAAM,CAErB,EASAX,EAAA,UAAA,MAAA,SAAMc,EAAS,CACT,KAAK,UACPF,GAA0BG,GAAkBD,CAAG,EAAG,IAAI,GAEtD,KAAK,UAAY,GACjB,KAAK,OAAOA,CAAG,EAEnB,EAQAd,EAAA,UAAA,SAAA,UAAA,CACM,KAAK,UACPY,GAA0BI,GAAuB,IAAI,GAErD,KAAK,UAAY,GACjB,KAAK,UAAS,EAElB,EAEAhB,EAAA,UAAA,YAAA,UAAA,CACO,KAAK,SACR,KAAK,UAAY,GACjBC,EAAA,UAAM,YAAW,KAAA,IAAA,EACjB,KAAK,YAAc,KAEvB,EAEUD,EAAA,UAAA,MAAV,SAAgBW,EAAQ,CACtB,KAAK,YAAY,KAAKA,CAAK,CAC7B,EAEUX,EAAA,UAAA,OAAV,SAAiBc,EAAQ,CACvB,GAAI,CACF,KAAK,YAAY,MAAMA,CAAG,UAE1B,KAAK,YAAW,EAEpB,EAEUd,EAAA,UAAA,UAAV,UAAA,CACE,GAAI,CACF,KAAK,YAAY,SAAQ,UAEzB,KAAK,YAAW,EAEpB,EACFA,CAAA,EApHmCiB,EAAY,EA2H/C,IAAMC,GAAQ,SAAS,UAAU,KAEjC,SAASC,GAAyCC,EAAQC,EAAY,CACpE,OAAOH,GAAM,KAAKE,EAAIC,CAAO,CAC/B,CAMA,IAAAC,GAAA,UAAA,CACE,SAAAA,EAAoBC,EAAqC,CAArC,KAAA,gBAAAA,CAAwC,CAE5D,OAAAD,EAAA,UAAA,KAAA,SAAKE,EAAQ,CACH,IAAAD,EAAoB,KAAI,gBAChC,GAAIA,EAAgB,KAClB,GAAI,CACFA,EAAgB,KAAKC,CAAK,QACnBC,EAAP,CACAC,GAAqBD,CAAK,EAGhC,EAEAH,EAAA,UAAA,MAAA,SAAMK,EAAQ,CACJ,IAAAJ,EAAoB,KAAI,gBAChC,GAAIA,EAAgB,MAClB,GAAI,CACFA,EAAgB,MAAMI,CAAG,QAClBF,EAAP,CACAC,GAAqBD,CAAK,OAG5BC,GAAqBC,CAAG,CAE5B,EAEAL,EAAA,UAAA,SAAA,UAAA,CACU,IAAAC,EAAoB,KAAI,gBAChC,GAAIA,EAAgB,SAClB,GAAI,CACFA,EAAgB,SAAQ,QACjBE,EAAP,CACAC,GAAqBD,CAAK,EAGhC,EACFH,CAAA,EArCA,EAuCAM,GAAA,SAAAC,EAAA,CAAuCC,GAAAF,EAAAC,CAAA,EACrC,SAAAD,EACEG,EACAN,EACAO,EAA8B,CAHhC,IAAAC,EAKEJ,EAAA,KAAA,IAAA,GAAO,KAEHN,EACJ,GAAIW,EAAWH,CAAc,GAAK,CAACA,EAGjCR,EAAkB,CAChB,KAAOQ,GAAc,KAAdA,EAAkB,OACzB,MAAON,GAAK,KAALA,EAAS,OAChB,SAAUO,GAAQ,KAARA,EAAY,YAEnB,CAEL,IAAIG,EACAF,GAAQG,GAAO,0BAIjBD,EAAU,OAAO,OAAOJ,CAAc,EACtCI,EAAQ,YAAc,UAAA,CAAM,OAAAF,EAAK,YAAW,CAAhB,EAC5BV,EAAkB,CAChB,KAAMQ,EAAe,MAAQZ,GAAKY,EAAe,KAAMI,CAAO,EAC9D,MAAOJ,EAAe,OAASZ,GAAKY,EAAe,MAAOI,CAAO,EACjE,SAAUJ,EAAe,UAAYZ,GAAKY,EAAe,SAAUI,CAAO,IAI5EZ,EAAkBQ,EAMtB,OAAAE,EAAK,YAAc,IAAIX,GAAiBC,CAAe,GACzD,CACF,OAAAK,CAAA,EAzCuCS,EAAU,EA2CjD,SAASC,GAAqBC,EAAU,CAClCC,GAAO,sCACTC,GAAaF,CAAK,EAIlBG,GAAqBH,CAAK,CAE9B,CAQA,SAASI,GAAoBC,EAAQ,CACnC,MAAMA,CACR,CAOA,SAASC,GAA0BC,EAA2CC,EAA2B,CAC/F,IAAAC,EAA0BR,GAAM,sBACxCQ,GAAyBC,GAAgB,WAAW,UAAA,CAAM,OAAAD,EAAsBF,EAAcC,CAAU,CAA9C,CAA+C,CAC3G,CAOO,IAAMG,GAA6D,CACxE,OAAQ,GACR,KAAMC,GACN,MAAOR,GACP,SAAUQ,ICjRL,IAAMC,GAA+B,UAAA,CAAM,OAAC,OAAO,QAAW,YAAc,OAAO,YAAe,cAAvD,EAAsE,ECyClH,SAAUC,GAAYC,EAAI,CAC9B,OAAOA,CACT,CCiCM,SAAUC,IAAI,SAACC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACnB,OAAOC,GAAcF,CAAG,CAC1B,CAGM,SAAUE,GAAoBF,EAA+B,CACjE,OAAIA,EAAI,SAAW,EACVG,GAGLH,EAAI,SAAW,EACVA,EAAI,GAGN,SAAeI,EAAQ,CAC5B,OAAOJ,EAAI,OAAO,SAACK,EAAWC,EAAuB,CAAK,OAAAA,EAAGD,CAAI,CAAP,EAAUD,CAAY,CAClF,CACF,CC9EA,IAAAG,EAAA,UAAA,CAkBE,SAAAA,EAAYC,EAA6E,CACnFA,IACF,KAAK,WAAaA,EAEtB,CA4BA,OAAAD,EAAA,UAAA,KAAA,SAAQE,EAAyB,CAC/B,IAAMC,EAAa,IAAIH,EACvB,OAAAG,EAAW,OAAS,KACpBA,EAAW,SAAWD,EACfC,CACT,EA8IAH,EAAA,UAAA,UAAA,SACEI,EACAC,EACAC,EAA8B,CAHhC,IAAAC,EAAA,KAKQC,EAAaC,GAAaL,CAAc,EAAIA,EAAiB,IAAIM,GAAeN,EAAgBC,EAAOC,CAAQ,EAErH,OAAAK,GAAa,UAAA,CACL,IAAAC,EAAuBL,EAArBL,EAAQU,EAAA,SAAEC,EAAMD,EAAA,OACxBJ,EAAW,IACTN,EAGIA,EAAS,KAAKM,EAAYK,CAAM,EAChCA,EAIAN,EAAK,WAAWC,CAAU,EAG1BD,EAAK,cAAcC,CAAU,CAAC,CAEtC,CAAC,EAEMA,CACT,EAGUR,EAAA,UAAA,cAAV,SAAwBc,EAAmB,CACzC,GAAI,CACF,OAAO,KAAK,WAAWA,CAAI,QACpBC,EAAP,CAIAD,EAAK,MAAMC,CAAG,EAElB,EA6DAf,EAAA,UAAA,QAAA,SAAQgB,EAA0BC,EAAoC,CAAtE,IAAAV,EAAA,KACE,OAAAU,EAAcC,GAAeD,CAAW,EAEjC,IAAIA,EAAkB,SAACE,EAASC,EAAM,CAC3C,IAAMZ,EAAa,IAAIE,GAAkB,CACvC,KAAM,SAACW,EAAK,CACV,GAAI,CACFL,EAAKK,CAAK,QACHN,EAAP,CACAK,EAAOL,CAAG,EACVP,EAAW,YAAW,EAE1B,EACA,MAAOY,EACP,SAAUD,EACX,EACDZ,EAAK,UAAUC,CAAU,CAC3B,CAAC,CACH,EAGUR,EAAA,UAAA,WAAV,SAAqBQ,EAA2B,OAC9C,OAAOI,EAAA,KAAK,UAAM,MAAAA,IAAA,OAAA,OAAAA,EAAE,UAAUJ,CAAU,CAC1C,EAOAR,EAAA,UAACG,IAAD,UAAA,CACE,OAAO,IACT,EA4FAH,EAAA,UAAA,KAAA,UAAA,SAAKsB,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACH,OAAOC,GAAcF,CAAU,EAAE,IAAI,CACvC,EA6BAtB,EAAA,UAAA,UAAA,SAAUiB,EAAoC,CAA9C,IAAAV,EAAA,KACE,OAAAU,EAAcC,GAAeD,CAAW,EAEjC,IAAIA,EAAY,SAACE,EAASC,EAAM,CACrC,IAAIC,EACJd,EAAK,UACH,SAACkB,EAAI,CAAK,OAACJ,EAAQI,CAAT,EACV,SAACV,EAAQ,CAAK,OAAAK,EAAOL,CAAG,CAAV,EACd,UAAA,CAAM,OAAAI,EAAQE,CAAK,CAAb,CAAc,CAExB,CAAC,CACH,EA3aOrB,EAAA,OAAkC,SAAIC,EAAwD,CACnG,OAAO,IAAID,EAAcC,CAAS,CACpC,EA0aFD,GA/cA,EAwdA,SAAS0B,GAAeC,EAA+C,OACrE,OAAOC,EAAAD,GAAW,KAAXA,EAAeE,GAAO,WAAO,MAAAD,IAAA,OAAAA,EAAI,OAC1C,CAEA,SAASE,GAAcC,EAAU,CAC/B,OAAOA,GAASC,EAAWD,EAAM,IAAI,GAAKC,EAAWD,EAAM,KAAK,GAAKC,EAAWD,EAAM,QAAQ,CAChG,CAEA,SAASE,GAAgBF,EAAU,CACjC,OAAQA,GAASA,aAAiBG,IAAgBJ,GAAWC,CAAK,GAAKI,GAAeJ,CAAK,CAC7F,CC1eM,SAAUK,GAAQC,EAAW,CACjC,OAAOC,EAAWD,GAAM,KAAA,OAANA,EAAQ,IAAI,CAChC,CAMM,SAAUE,EACdC,EAAqF,CAErF,OAAO,SAACH,EAAqB,CAC3B,GAAID,GAAQC,CAAM,EAChB,OAAOA,EAAO,KAAK,SAA+BI,EAA2B,CAC3E,GAAI,CACF,OAAOD,EAAKC,EAAc,IAAI,QACvBC,EAAP,CACA,KAAK,MAAMA,CAAG,EAElB,CAAC,EAEH,MAAM,IAAI,UAAU,wCAAwC,CAC9D,CACF,CCjBM,SAAUC,EACdC,EACAC,EACAC,EACAC,EACAC,EAAuB,CAEvB,OAAO,IAAIC,GAAmBL,EAAaC,EAAQC,EAAYC,EAASC,CAAU,CACpF,CAMA,IAAAC,GAAA,SAAAC,EAAA,CAA2CC,GAAAF,EAAAC,CAAA,EAiBzC,SAAAD,EACEL,EACAC,EACAC,EACAC,EACQC,EACAI,EAAiC,CAN3C,IAAAC,EAoBEH,EAAA,KAAA,KAAMN,CAAW,GAAC,KAfV,OAAAS,EAAA,WAAAL,EACAK,EAAA,kBAAAD,EAeRC,EAAK,MAAQR,EACT,SAAuCS,EAAQ,CAC7C,GAAI,CACFT,EAAOS,CAAK,QACLC,EAAP,CACAX,EAAY,MAAMW,CAAG,EAEzB,EACAL,EAAA,UAAM,MACVG,EAAK,OAASN,EACV,SAAuCQ,EAAQ,CAC7C,GAAI,CACFR,EAAQQ,CAAG,QACJA,EAAP,CAEAX,EAAY,MAAMW,CAAG,UAGrB,KAAK,YAAW,EAEpB,EACAL,EAAA,UAAM,OACVG,EAAK,UAAYP,EACb,UAAA,CACE,GAAI,CACFA,EAAU,QACHS,EAAP,CAEAX,EAAY,MAAMW,CAAG,UAGrB,KAAK,YAAW,EAEpB,EACAL,EAAA,UAAM,WACZ,CAEA,OAAAD,EAAA,UAAA,YAAA,UAAA,OACE,GAAI,CAAC,KAAK,mBAAqB,KAAK,kBAAiB,EAAI,CAC/C,IAAAO,EAAW,KAAI,OACvBN,EAAA,UAAM,YAAW,KAAA,IAAA,EAEjB,CAACM,KAAUC,EAAA,KAAK,cAAU,MAAAA,IAAA,QAAAA,EAAA,KAAf,IAAI,GAEnB,EACFR,CAAA,EAnF2CS,EAAU,ECd9C,IAAMC,GAAiD,CAG5D,SAAA,SAASC,EAAQ,CACf,IAAIC,EAAU,sBACVC,EAAkD,qBAC9CC,EAAaJ,GAAsB,SACvCI,IACFF,EAAUE,EAAS,sBACnBD,EAASC,EAAS,sBAEpB,IAAMC,EAASH,EAAQ,SAACI,EAAS,CAI/BH,EAAS,OACTF,EAASK,CAAS,CACpB,CAAC,EACD,OAAO,IAAIC,GAAa,UAAA,CAAM,OAAAJ,GAAM,KAAA,OAANA,EAASE,CAAM,CAAf,CAAgB,CAChD,EACA,sBAAqB,UAAA,SAACG,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACZ,IAAAL,EAAaJ,GAAsB,SAC3C,QAAQI,GAAQ,KAAA,OAARA,EAAU,wBAAyB,uBAAsB,MAAA,OAAAM,EAAA,CAAA,EAAAC,EAAIH,CAAI,CAAA,CAAA,CAC3E,EACA,qBAAoB,UAAA,SAACA,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACX,IAAAL,EAAaJ,GAAsB,SAC3C,QAAQI,GAAQ,KAAA,OAARA,EAAU,uBAAwB,sBAAqB,MAAA,OAAAM,EAAA,CAAA,EAAAC,EAAIH,CAAI,CAAA,CAAA,CACzE,EACA,SAAU,QCrBL,IAAMI,GAAuDC,GAClE,SAACC,EAAM,CACL,OAAA,UAAoC,CAClCA,EAAO,IAAI,EACX,KAAK,KAAO,0BACZ,KAAK,QAAU,qBACjB,CAJA,CAIC,ECXL,IAAAC,EAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAwB9B,SAAAD,GAAA,CAAA,IAAAG,EAEEF,EAAA,KAAA,IAAA,GAAO,KAzBT,OAAAE,EAAA,OAAS,GAEDA,EAAA,iBAAyC,KAGjDA,EAAA,UAA2B,CAAA,EAE3BA,EAAA,UAAY,GAEZA,EAAA,SAAW,GAEXA,EAAA,YAAmB,MAenB,CAGA,OAAAH,EAAA,UAAA,KAAA,SAAQI,EAAwB,CAC9B,IAAMC,EAAU,IAAIC,GAAiB,KAAM,IAAI,EAC/C,OAAAD,EAAQ,SAAWD,EACZC,CACT,EAGUL,EAAA,UAAA,eAAV,UAAA,CACE,GAAI,KAAK,OACP,MAAM,IAAIO,EAEd,EAEAP,EAAA,UAAA,KAAA,SAAKQ,EAAQ,CAAb,IAAAL,EAAA,KACEM,GAAa,UAAA,SAEX,GADAN,EAAK,eAAc,EACf,CAACA,EAAK,UAAW,CACdA,EAAK,mBACRA,EAAK,iBAAmB,MAAM,KAAKA,EAAK,SAAS,OAEnD,QAAuBO,EAAAC,GAAAR,EAAK,gBAAgB,EAAAS,EAAAF,EAAA,KAAA,EAAA,CAAAE,EAAA,KAAAA,EAAAF,EAAA,KAAA,EAAE,CAAzC,IAAMG,EAAQD,EAAA,MACjBC,EAAS,KAAKL,CAAK,qGAGzB,CAAC,CACH,EAEAR,EAAA,UAAA,MAAA,SAAMc,EAAQ,CAAd,IAAAX,EAAA,KACEM,GAAa,UAAA,CAEX,GADAN,EAAK,eAAc,EACf,CAACA,EAAK,UAAW,CACnBA,EAAK,SAAWA,EAAK,UAAY,GACjCA,EAAK,YAAcW,EAEnB,QADQC,EAAcZ,EAAI,UACnBY,EAAU,QACfA,EAAU,MAAK,EAAI,MAAMD,CAAG,EAGlC,CAAC,CACH,EAEAd,EAAA,UAAA,SAAA,UAAA,CAAA,IAAAG,EAAA,KACEM,GAAa,UAAA,CAEX,GADAN,EAAK,eAAc,EACf,CAACA,EAAK,UAAW,CACnBA,EAAK,UAAY,GAEjB,QADQY,EAAcZ,EAAI,UACnBY,EAAU,QACfA,EAAU,MAAK,EAAI,SAAQ,EAGjC,CAAC,CACH,EAEAf,EAAA,UAAA,YAAA,UAAA,CACE,KAAK,UAAY,KAAK,OAAS,GAC/B,KAAK,UAAY,KAAK,iBAAmB,IAC3C,EAEA,OAAA,eAAIA,EAAA,UAAA,WAAQ,KAAZ,UAAA,OACE,QAAOgB,EAAA,KAAK,aAAS,MAAAA,IAAA,OAAA,OAAAA,EAAE,QAAS,CAClC,kCAGUhB,EAAA,UAAA,cAAV,SAAwBiB,EAAyB,CAC/C,YAAK,eAAc,EACZhB,EAAA,UAAM,cAAa,KAAA,KAACgB,CAAU,CACvC,EAGUjB,EAAA,UAAA,WAAV,SAAqBiB,EAAyB,CAC5C,YAAK,eAAc,EACnB,KAAK,wBAAwBA,CAAU,EAChC,KAAK,gBAAgBA,CAAU,CACxC,EAGUjB,EAAA,UAAA,gBAAV,SAA0BiB,EAA2B,CAArD,IAAAd,EAAA,KACQa,EAAqC,KAAnCE,EAAQF,EAAA,SAAEG,EAASH,EAAA,UAAED,EAASC,EAAA,UACtC,OAAIE,GAAYC,EACPC,IAET,KAAK,iBAAmB,KACxBL,EAAU,KAAKE,CAAU,EAClB,IAAII,GAAa,UAAA,CACtBlB,EAAK,iBAAmB,KACxBmB,GAAUP,EAAWE,CAAU,CACjC,CAAC,EACH,EAGUjB,EAAA,UAAA,wBAAV,SAAkCiB,EAA2B,CACrD,IAAAD,EAAuC,KAArCE,EAAQF,EAAA,SAAEO,EAAWP,EAAA,YAAEG,EAASH,EAAA,UACpCE,EACFD,EAAW,MAAMM,CAAW,EACnBJ,GACTF,EAAW,SAAQ,CAEvB,EAQAjB,EAAA,UAAA,aAAA,UAAA,CACE,IAAMwB,EAAkB,IAAIC,EAC5B,OAAAD,EAAW,OAAS,KACbA,CACT,EAxHOxB,EAAA,OAAkC,SAAI0B,EAA0BC,EAAqB,CAC1F,OAAO,IAAIrB,GAAoBoB,EAAaC,CAAM,CACpD,EAuHF3B,GA7IgCyB,CAAU,EAkJ1C,IAAAG,GAAA,SAAAC,EAAA,CAAyCC,GAAAF,EAAAC,CAAA,EACvC,SAAAD,EAESG,EACPC,EAAsB,CAHxB,IAAAC,EAKEJ,EAAA,KAAA,IAAA,GAAO,KAHA,OAAAI,EAAA,YAAAF,EAIPE,EAAK,OAASD,GAChB,CAEA,OAAAJ,EAAA,UAAA,KAAA,SAAKM,EAAQ,UACXC,GAAAC,EAAA,KAAK,eAAW,MAAAA,IAAA,OAAA,OAAAA,EAAE,QAAI,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAGF,CAAK,CAChC,EAEAN,EAAA,UAAA,MAAA,SAAMS,EAAQ,UACZF,GAAAC,EAAA,KAAK,eAAW,MAAAA,IAAA,OAAA,OAAAA,EAAE,SAAK,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAGC,CAAG,CAC/B,EAEAT,EAAA,UAAA,SAAA,UAAA,UACEO,GAAAC,EAAA,KAAK,eAAW,MAAAA,IAAA,OAAA,OAAAA,EAAE,YAAQ,MAAAD,IAAA,QAAAA,EAAA,KAAAC,CAAA,CAC5B,EAGUR,EAAA,UAAA,WAAV,SAAqBU,EAAyB,SAC5C,OAAOH,GAAAC,EAAA,KAAK,UAAM,MAAAA,IAAA,OAAA,OAAAA,EAAE,UAAUE,CAAU,KAAC,MAAAH,IAAA,OAAAA,EAAII,EAC/C,EACFX,CAAA,EA1ByCY,CAAO,EC5JzC,IAAMC,GAA+C,CAC1D,IAAG,UAAA,CAGD,OAAQA,GAAsB,UAAY,MAAM,IAAG,CACrD,EACA,SAAU,QCwBZ,IAAAC,GAAA,SAAAC,EAAA,CAAsCC,GAAAF,EAAAC,CAAA,EAUpC,SAAAD,EACUG,EACAC,EACAC,EAA6D,CAF7DF,IAAA,SAAAA,EAAA,KACAC,IAAA,SAAAA,EAAA,KACAC,IAAA,SAAAA,EAAAC,IAHV,IAAAC,EAKEN,EAAA,KAAA,IAAA,GAAO,KAJC,OAAAM,EAAA,YAAAJ,EACAI,EAAA,YAAAH,EACAG,EAAA,mBAAAF,EAZFE,EAAA,QAA0B,CAAA,EAC1BA,EAAA,oBAAsB,GAc5BA,EAAK,oBAAsBH,IAAgB,IAC3CG,EAAK,YAAc,KAAK,IAAI,EAAGJ,CAAW,EAC1CI,EAAK,YAAc,KAAK,IAAI,EAAGH,CAAW,GAC5C,CAEA,OAAAJ,EAAA,UAAA,KAAA,SAAKQ,EAAQ,CACL,IAAAC,EAA+E,KAA7EC,EAASD,EAAA,UAAEE,EAAOF,EAAA,QAAEG,EAAmBH,EAAA,oBAAEJ,EAAkBI,EAAA,mBAAEL,EAAWK,EAAA,YAC3EC,IACHC,EAAQ,KAAKH,CAAK,EAClB,CAACI,GAAuBD,EAAQ,KAAKN,EAAmB,IAAG,EAAKD,CAAW,GAE7E,KAAK,YAAW,EAChBH,EAAA,UAAM,KAAI,KAAA,KAACO,CAAK,CAClB,EAGUR,EAAA,UAAA,WAAV,SAAqBa,EAAyB,CAC5C,KAAK,eAAc,EACnB,KAAK,YAAW,EAQhB,QANMC,EAAe,KAAK,gBAAgBD,CAAU,EAE9CJ,EAAmC,KAAjCG,EAAmBH,EAAA,oBAAEE,EAAOF,EAAA,QAG9BM,EAAOJ,EAAQ,MAAK,EACjBK,EAAI,EAAGA,EAAID,EAAK,QAAU,CAACF,EAAW,OAAQG,GAAKJ,EAAsB,EAAI,EACpFC,EAAW,KAAKE,EAAKC,EAAO,EAG9B,YAAK,wBAAwBH,CAAU,EAEhCC,CACT,EAEQd,EAAA,UAAA,YAAR,UAAA,CACQ,IAAAS,EAAoE,KAAlEN,EAAWM,EAAA,YAAEJ,EAAkBI,EAAA,mBAAEE,EAAOF,EAAA,QAAEG,EAAmBH,EAAA,oBAK/DQ,GAAsBL,EAAsB,EAAI,GAAKT,EAK3D,GAJAA,EAAc,KAAYc,EAAqBN,EAAQ,QAAUA,EAAQ,OAAO,EAAGA,EAAQ,OAASM,CAAkB,EAIlH,CAACL,EAAqB,CAKxB,QAJMM,EAAMb,EAAmB,IAAG,EAC9Bc,EAAO,EAGFH,EAAI,EAAGA,EAAIL,EAAQ,QAAWA,EAAQK,IAAiBE,EAAKF,GAAK,EACxEG,EAAOH,EAETG,GAAQR,EAAQ,OAAO,EAAGQ,EAAO,CAAC,EAEtC,EACFnB,CAAA,EAzEsCoB,CAAO,EClB7C,IAAAC,GAAA,SAAAC,EAAA,CAA+BC,GAAAF,EAAAC,CAAA,EAC7B,SAAAD,EAAYG,EAAsBC,EAAmD,QACnFH,EAAA,KAAA,IAAA,GAAO,IACT,CAWO,OAAAD,EAAA,UAAA,SAAP,SAAgBK,EAAWC,EAAiB,CAAjB,OAAAA,IAAA,SAAAA,EAAA,GAClB,IACT,EACFN,CAAA,EAjB+BO,EAAY,ECHpC,IAAMC,GAAqC,CAGhD,YAAA,SAAYC,EAAqBC,EAAgB,SAAEC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,EAAA,GAAA,UAAAA,GACzC,IAAAC,EAAaL,GAAgB,SACrC,OAAIK,GAAQ,MAARA,EAAU,YACLA,EAAS,YAAW,MAApBA,EAAQC,EAAA,CAAaL,EAASC,CAAO,EAAAK,EAAKJ,CAAI,CAAA,CAAA,EAEhD,YAAW,MAAA,OAAAG,EAAA,CAACL,EAASC,CAAO,EAAAK,EAAKJ,CAAI,CAAA,CAAA,CAC9C,EACA,cAAA,SAAcK,EAAM,CACV,IAAAH,EAAaL,GAAgB,SACrC,QAAQK,GAAQ,KAAA,OAARA,EAAU,gBAAiB,eAAeG,CAAa,CACjE,EACA,SAAU,QCrBZ,IAAAC,GAAA,SAAAC,EAAA,CAAoCC,GAAAF,EAAAC,CAAA,EAOlC,SAAAD,EAAsBG,EAAqCC,EAAmD,CAA9G,IAAAC,EACEJ,EAAA,KAAA,KAAME,EAAWC,CAAI,GAAC,KADF,OAAAC,EAAA,UAAAF,EAAqCE,EAAA,KAAAD,EAFjDC,EAAA,QAAmB,IAI7B,CAEO,OAAAL,EAAA,UAAA,SAAP,SAAgBM,EAAWC,EAAiB,OAC1C,GADyBA,IAAA,SAAAA,EAAA,GACrB,KAAK,OACP,OAAO,KAIT,KAAK,MAAQD,EAEb,IAAME,EAAK,KAAK,GACVL,EAAY,KAAK,UAuBvB,OAAIK,GAAM,OACR,KAAK,GAAK,KAAK,eAAeL,EAAWK,EAAID,CAAK,GAKpD,KAAK,QAAU,GAEf,KAAK,MAAQA,EAEb,KAAK,IAAKE,EAAA,KAAK,MAAE,MAAAA,IAAA,OAAAA,EAAI,KAAK,eAAeN,EAAW,KAAK,GAAII,CAAK,EAE3D,IACT,EAEUP,EAAA,UAAA,eAAV,SAAyBG,EAA2BO,EAAmBH,EAAiB,CAAjB,OAAAA,IAAA,SAAAA,EAAA,GAC9DI,GAAiB,YAAYR,EAAU,MAAM,KAAKA,EAAW,IAAI,EAAGI,CAAK,CAClF,EAEUP,EAAA,UAAA,eAAV,SAAyBY,EAA4BJ,EAAkBD,EAAwB,CAE7F,GAFqEA,IAAA,SAAAA,EAAA,GAEjEA,GAAS,MAAQ,KAAK,QAAUA,GAAS,KAAK,UAAY,GAC5D,OAAOC,EAILA,GAAM,MACRG,GAAiB,cAAcH,CAAE,CAIrC,EAMOR,EAAA,UAAA,QAAP,SAAeM,EAAUC,EAAa,CACpC,GAAI,KAAK,OACP,OAAO,IAAI,MAAM,8BAA8B,EAGjD,KAAK,QAAU,GACf,IAAMM,EAAQ,KAAK,SAASP,EAAOC,CAAK,EACxC,GAAIM,EACF,OAAOA,EACE,KAAK,UAAY,IAAS,KAAK,IAAM,OAc9C,KAAK,GAAK,KAAK,eAAe,KAAK,UAAW,KAAK,GAAI,IAAI,EAE/D,EAEUb,EAAA,UAAA,SAAV,SAAmBM,EAAUQ,EAAc,CACzC,IAAIC,EAAmB,GACnBC,EACJ,GAAI,CACF,KAAK,KAAKV,CAAK,QACRW,EAAP,CACAF,EAAU,GAIVC,EAAaC,GAAQ,IAAI,MAAM,oCAAoC,EAErE,GAAIF,EACF,YAAK,YAAW,EACTC,CAEX,EAEAhB,EAAA,UAAA,YAAA,UAAA,CACE,GAAI,CAAC,KAAK,OAAQ,CACV,IAAAS,EAAoB,KAAlBD,EAAEC,EAAA,GAAEN,EAASM,EAAA,UACbS,EAAYf,EAAS,QAE7B,KAAK,KAAO,KAAK,MAAQ,KAAK,UAAY,KAC1C,KAAK,QAAU,GAEfgB,GAAUD,EAAS,IAAI,EACnBV,GAAM,OACR,KAAK,GAAK,KAAK,eAAeL,EAAWK,EAAI,IAAI,GAGnD,KAAK,MAAQ,KACbP,EAAA,UAAM,YAAW,KAAA,IAAA,EAErB,EACFD,CAAA,EA9IoCoB,EAAM,ECgB1C,IAAAC,GAAA,UAAA,CAGE,SAAAA,EAAoBC,EAAoCC,EAAiC,CAAjCA,IAAA,SAAAA,EAAoBF,EAAU,KAAlE,KAAA,oBAAAC,EAClB,KAAK,IAAMC,CACb,CA6BO,OAAAF,EAAA,UAAA,SAAP,SAAmBG,EAAqDC,EAAmBC,EAAS,CAA5B,OAAAD,IAAA,SAAAA,EAAA,GAC/D,IAAI,KAAK,oBAAuB,KAAMD,CAAI,EAAE,SAASE,EAAOD,CAAK,CAC1E,EAnCcJ,EAAA,IAAoBM,GAAsB,IAoC1DN,GArCA,ECnBA,IAAAO,GAAA,SAAAC,EAAA,CAAoCC,GAAAF,EAAAC,CAAA,EAkBlC,SAAAD,EAAYG,EAAgCC,EAAiC,CAAjCA,IAAA,SAAAA,EAAoBC,GAAU,KAA1E,IAAAC,EACEL,EAAA,KAAA,KAAME,EAAiBC,CAAG,GAAC,KAlBtB,OAAAE,EAAA,QAAmC,CAAA,EAOnCA,EAAA,QAAmB,IAY1B,CAEO,OAAAN,EAAA,UAAA,MAAP,SAAaO,EAAwB,CAC3B,IAAAC,EAAY,KAAI,QAExB,GAAI,KAAK,QAAS,CAChBA,EAAQ,KAAKD,CAAM,EACnB,OAGF,IAAIE,EACJ,KAAK,QAAU,GAEf,EACE,IAAKA,EAAQF,EAAO,QAAQA,EAAO,MAAOA,EAAO,KAAK,EACpD,YAEMA,EAASC,EAAQ,MAAK,GAIhC,GAFA,KAAK,QAAU,GAEXC,EAAO,CACT,KAAQF,EAASC,EAAQ,MAAK,GAC5BD,EAAO,YAAW,EAEpB,MAAME,EAEV,EACFT,CAAA,EAhDoCK,EAAS,EC6CtC,IAAMK,GAAiB,IAAIC,GAAeC,EAAW,EAK/CC,GAAQH,GCjDrB,IAAAI,GAAA,SAAAC,EAAA,CAA6CC,GAAAF,EAAAC,CAAA,EAC3C,SAAAD,EAAsBG,EAA8CC,EAAmD,CAAvH,IAAAC,EACEJ,EAAA,KAAA,KAAME,EAAWC,CAAI,GAAC,KADF,OAAAC,EAAA,UAAAF,EAA8CE,EAAA,KAAAD,GAEpE,CAEU,OAAAJ,EAAA,UAAA,eAAV,SAAyBG,EAAoCG,EAAkBC,EAAiB,CAE9F,OAF6EA,IAAA,SAAAA,EAAA,GAEzEA,IAAU,MAAQA,EAAQ,EACrBN,EAAA,UAAM,eAAc,KAAA,KAACE,EAAWG,EAAIC,CAAK,GAGlDJ,EAAU,QAAQ,KAAK,IAAI,EAIpBA,EAAU,aAAeA,EAAU,WAAaK,GAAuB,sBAAsB,UAAA,CAAM,OAAAL,EAAU,MAAM,MAAS,CAAzB,CAA0B,GACtI,EAEUH,EAAA,UAAA,eAAV,SAAyBG,EAAoCG,EAAkBC,EAAiB,OAI9F,GAJ6EA,IAAA,SAAAA,EAAA,GAIzEA,GAAS,KAAOA,EAAQ,EAAI,KAAK,MAAQ,EAC3C,OAAON,EAAA,UAAM,eAAc,KAAA,KAACE,EAAWG,EAAIC,CAAK,EAK1C,IAAAE,EAAYN,EAAS,QACzBG,GAAM,QAAQI,EAAAD,EAAQA,EAAQ,OAAS,MAAE,MAAAC,IAAA,OAAA,OAAAA,EAAE,MAAOJ,IACpDE,GAAuB,qBAAqBF,CAAY,EACxDH,EAAU,WAAa,OAI3B,EACFH,CAAA,EApC6CW,EAAW,ECHxD,IAAAC,GAAA,SAAAC,EAAA,CAA6CC,GAAAF,EAAAC,CAAA,EAA7C,SAAAD,GAAA,+CAkCA,CAjCS,OAAAA,EAAA,UAAA,MAAP,SAAaG,EAAyB,CACpC,KAAK,QAAU,GAUf,IAAMC,EAAU,KAAK,WACrB,KAAK,WAAa,OAEV,IAAAC,EAAY,KAAI,QACpBC,EACJH,EAASA,GAAUE,EAAQ,MAAK,EAEhC,EACE,IAAKC,EAAQH,EAAO,QAAQA,EAAO,MAAOA,EAAO,KAAK,EACpD,aAEMA,EAASE,EAAQ,KAAOF,EAAO,KAAOC,GAAWC,EAAQ,MAAK,GAIxE,GAFA,KAAK,QAAU,GAEXC,EAAO,CACT,MAAQH,EAASE,EAAQ,KAAOF,EAAO,KAAOC,GAAWC,EAAQ,MAAK,GACpEF,EAAO,YAAW,EAEpB,MAAMG,EAEV,EACFN,CAAA,EAlC6CO,EAAc,ECgCpD,IAAMC,GAA0B,IAAIC,GAAwBC,EAAoB,EC8BhF,IAAMC,EAAQ,IAAIC,EAAkB,SAACC,EAAU,CAAK,OAAAA,EAAW,SAAQ,CAAnB,CAAqB,EC9D1E,SAAUC,GAAYC,EAAU,CACpC,OAAOA,GAASC,EAAWD,EAAM,QAAQ,CAC3C,CCDA,SAASE,GAAQC,EAAQ,CACvB,OAAOA,EAAIA,EAAI,OAAS,EAC1B,CAEM,SAAUC,GAAkBC,EAAW,CAC3C,OAAOC,EAAWJ,GAAKG,CAAI,CAAC,EAAIA,EAAK,IAAG,EAAK,MAC/C,CAEM,SAAUE,GAAaF,EAAW,CACtC,OAAOG,GAAYN,GAAKG,CAAI,CAAC,EAAIA,EAAK,IAAG,EAAK,MAChD,CAEM,SAAUI,GAAUJ,EAAaK,EAAoB,CACzD,OAAO,OAAOR,GAAKG,CAAI,GAAM,SAAWA,EAAK,IAAG,EAAMK,CACxD,CClBO,IAAMC,GAAe,SAAIC,EAAM,CAAwB,OAAAA,GAAK,OAAOA,EAAE,QAAW,UAAY,OAAOA,GAAM,UAAlD,ECMxD,SAAUC,GAAUC,EAAU,CAClC,OAAOC,EAAWD,GAAK,KAAA,OAALA,EAAO,IAAI,CAC/B,CCHM,SAAUE,GAAoBC,EAAU,CAC5C,OAAOC,EAAWD,EAAME,GAAkB,CAC5C,CCLM,SAAUC,GAAmBC,EAAQ,CACzC,OAAO,OAAO,eAAiBC,EAAWD,GAAG,KAAA,OAAHA,EAAM,OAAO,cAAc,CACvE,CCAM,SAAUE,GAAiCC,EAAU,CAEzD,OAAO,IAAI,UACT,iBACEA,IAAU,MAAQ,OAAOA,GAAU,SAAW,oBAAsB,IAAIA,EAAK,KAAG,0HACwC,CAE9H,CCXM,SAAUC,IAAiB,CAC/B,OAAI,OAAO,QAAW,YAAc,CAAC,OAAO,SACnC,aAGF,OAAO,QAChB,CAEO,IAAMC,GAAWD,GAAiB,ECJnC,SAAUE,GAAWC,EAAU,CACnC,OAAOC,EAAWD,GAAK,KAAA,OAALA,EAAQE,GAAgB,CAC5C,CCHM,SAAiBC,GAAsCC,EAAqC,mGAC1FC,EAASD,EAAe,UAAS,2DAGX,MAAA,CAAA,EAAAE,GAAMD,EAAO,KAAI,CAAE,CAAA,gBAArCE,EAAkBC,EAAA,KAAA,EAAhBC,EAAKF,EAAA,MAAEG,EAAIH,EAAA,KACfG,iBAAA,CAAA,EAAA,CAAA,SACF,MAAA,CAAA,EAAAF,EAAA,KAAA,CAAA,qBAEIC,CAAM,CAAA,SAAZ,MAAA,CAAA,EAAAD,EAAA,KAAA,CAAA,SAAA,OAAAA,EAAA,KAAA,mCAGF,OAAAH,EAAO,YAAW,6BAIhB,SAAUM,GAAwBC,EAAQ,CAG9C,OAAOC,EAAWD,GAAG,KAAA,OAAHA,EAAK,SAAS,CAClC,CCPM,SAAUE,EAAaC,EAAyB,CACpD,GAAIA,aAAiBC,EACnB,OAAOD,EAET,GAAIA,GAAS,KAAM,CACjB,GAAIE,GAAoBF,CAAK,EAC3B,OAAOG,GAAsBH,CAAK,EAEpC,GAAII,GAAYJ,CAAK,EACnB,OAAOK,GAAcL,CAAK,EAE5B,GAAIM,GAAUN,CAAK,EACjB,OAAOO,GAAYP,CAAK,EAE1B,GAAIQ,GAAgBR,CAAK,EACvB,OAAOS,GAAkBT,CAAK,EAEhC,GAAIU,GAAWV,CAAK,EAClB,OAAOW,GAAaX,CAAK,EAE3B,GAAIY,GAAqBZ,CAAK,EAC5B,OAAOa,GAAuBb,CAAK,EAIvC,MAAMc,GAAiCd,CAAK,CAC9C,CAMM,SAAUG,GAAyBY,EAAQ,CAC/C,OAAO,IAAId,EAAW,SAACe,EAAyB,CAC9C,IAAMC,EAAMF,EAAIG,IAAkB,EAClC,GAAIC,EAAWF,EAAI,SAAS,EAC1B,OAAOA,EAAI,UAAUD,CAAU,EAGjC,MAAM,IAAI,UAAU,gEAAgE,CACtF,CAAC,CACH,CASM,SAAUX,GAAiBe,EAAmB,CAClD,OAAO,IAAInB,EAAW,SAACe,EAAyB,CAU9C,QAASK,EAAI,EAAGA,EAAID,EAAM,QAAU,CAACJ,EAAW,OAAQK,IACtDL,EAAW,KAAKI,EAAMC,EAAE,EAE1BL,EAAW,SAAQ,CACrB,CAAC,CACH,CAEM,SAAUT,GAAee,EAAuB,CACpD,OAAO,IAAIrB,EAAW,SAACe,EAAyB,CAC9CM,EACG,KACC,SAACC,EAAK,CACCP,EAAW,SACdA,EAAW,KAAKO,CAAK,EACrBP,EAAW,SAAQ,EAEvB,EACA,SAACQ,EAAQ,CAAK,OAAAR,EAAW,MAAMQ,CAAG,CAApB,CAAqB,EAEpC,KAAK,KAAMC,EAAoB,CACpC,CAAC,CACH,CAEM,SAAUd,GAAgBe,EAAqB,CACnD,OAAO,IAAIzB,EAAW,SAACe,EAAyB,aAC9C,QAAoBW,EAAAC,GAAAF,CAAQ,EAAAG,EAAAF,EAAA,KAAA,EAAA,CAAAE,EAAA,KAAAA,EAAAF,EAAA,KAAA,EAAE,CAAzB,IAAMJ,EAAKM,EAAA,MAEd,GADAb,EAAW,KAAKO,CAAK,EACjBP,EAAW,OACb,yGAGJA,EAAW,SAAQ,CACrB,CAAC,CACH,CAEM,SAAUP,GAAqBqB,EAA+B,CAClE,OAAO,IAAI7B,EAAW,SAACe,EAAyB,CAC9Ce,GAAQD,EAAed,CAAU,EAAE,MAAM,SAACQ,EAAG,CAAK,OAAAR,EAAW,MAAMQ,CAAG,CAApB,CAAqB,CACzE,CAAC,CACH,CAEM,SAAUX,GAA0BmB,EAAqC,CAC7E,OAAOvB,GAAkBwB,GAAmCD,CAAc,CAAC,CAC7E,CAEA,SAAeD,GAAWD,EAAiCd,EAAyB,uIACxDkB,EAAAC,GAAAL,CAAa,gFAIrC,GAJeP,EAAKa,EAAA,MACpBpB,EAAW,KAAKO,CAAK,EAGjBP,EAAW,OACb,MAAA,CAAA,CAAA,6RAGJ,OAAAA,EAAW,SAAQ,WChHf,SAAUqB,GACdC,EACAC,EACAC,EACAC,EACAC,EAAc,CADdD,IAAA,SAAAA,EAAA,GACAC,IAAA,SAAAA,EAAA,IAEA,IAAMC,EAAuBJ,EAAU,SAAS,UAAA,CAC9CC,EAAI,EACAE,EACFJ,EAAmB,IAAI,KAAK,SAAS,KAAMG,CAAK,CAAC,EAEjD,KAAK,YAAW,CAEpB,EAAGA,CAAK,EAIR,GAFAH,EAAmB,IAAIK,CAAoB,EAEvC,CAACD,EAKH,OAAOC,CAEX,CCeM,SAAUC,GAAaC,EAA0BC,EAAS,CAAT,OAAAA,IAAA,SAAAA,EAAA,GAC9CC,EAAQ,SAACC,EAAQC,EAAU,CAChCD,EAAO,UACLE,EACED,EACA,SAACE,EAAK,CAAK,OAAAC,GAAgBH,EAAYJ,EAAW,UAAA,CAAM,OAAAI,EAAW,KAAKE,CAAK,CAArB,EAAwBL,CAAK,CAA1E,EACX,UAAA,CAAM,OAAAM,GAAgBH,EAAYJ,EAAW,UAAA,CAAM,OAAAI,EAAW,SAAQ,CAAnB,EAAuBH,CAAK,CAAzE,EACN,SAACO,EAAG,CAAK,OAAAD,GAAgBH,EAAYJ,EAAW,UAAA,CAAM,OAAAI,EAAW,MAAMI,CAAG,CAApB,EAAuBP,CAAK,CAAzE,CAA0E,CACpF,CAEL,CAAC,CACH,CCPM,SAAUQ,GAAeC,EAA0BC,EAAiB,CAAjB,OAAAA,IAAA,SAAAA,EAAA,GAChDC,EAAQ,SAACC,EAAQC,EAAU,CAChCA,EAAW,IAAIJ,EAAU,SAAS,UAAA,CAAM,OAAAG,EAAO,UAAUC,CAAU,CAA3B,EAA8BH,CAAK,CAAC,CAC9E,CAAC,CACH,CC7DM,SAAUI,GAAsBC,EAA6BC,EAAwB,CACzF,OAAOC,EAAUF,CAAK,EAAE,KAAKG,GAAYF,CAAS,EAAGG,GAAUH,CAAS,CAAC,CAC3E,CCFM,SAAUI,GAAmBC,EAAuBC,EAAwB,CAChF,OAAOC,EAAUF,CAAK,EAAE,KAAKG,GAAYF,CAAS,EAAGG,GAAUH,CAAS,CAAC,CAC3E,CCJM,SAAUI,GAAiBC,EAAqBC,EAAwB,CAC5E,OAAO,IAAIC,EAAc,SAACC,EAAU,CAElC,IAAIC,EAAI,EAER,OAAOH,EAAU,SAAS,UAAA,CACpBG,IAAMJ,EAAM,OAGdG,EAAW,SAAQ,GAInBA,EAAW,KAAKH,EAAMI,IAAI,EAIrBD,EAAW,QACd,KAAK,SAAQ,EAGnB,CAAC,CACH,CAAC,CACH,CCfM,SAAUE,GAAoBC,EAAoBC,EAAwB,CAC9E,OAAO,IAAIC,EAAc,SAACC,EAAU,CAClC,IAAIC,EAKJ,OAAAC,GAAgBF,EAAYF,EAAW,UAAA,CAErCG,EAAYJ,EAAcI,IAAgB,EAE1CC,GACEF,EACAF,EACA,UAAA,OACMK,EACAC,EACJ,GAAI,CAEDC,EAAkBJ,EAAS,KAAI,EAA7BE,EAAKE,EAAA,MAAED,EAAIC,EAAA,WACPC,EAAP,CAEAN,EAAW,MAAMM,CAAG,EACpB,OAGEF,EAKFJ,EAAW,SAAQ,EAGnBA,EAAW,KAAKG,CAAK,CAEzB,EACA,EACA,EAAI,CAER,CAAC,EAMM,UAAA,CAAM,OAAAI,EAAWN,GAAQ,KAAA,OAARA,EAAU,MAAM,GAAKA,EAAS,OAAM,CAA/C,CACf,CAAC,CACH,CCvDM,SAAUO,GAAyBC,EAAyBC,EAAwB,CACxF,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,yBAAyB,EAE3C,OAAO,IAAIE,EAAc,SAACC,EAAU,CAClCC,GAAgBD,EAAYF,EAAW,UAAA,CACrC,IAAMI,EAAWL,EAAM,OAAO,eAAc,EAC5CI,GACED,EACAF,EACA,UAAA,CACEI,EAAS,KAAI,EAAG,KAAK,SAACC,EAAM,CACtBA,EAAO,KAGTH,EAAW,SAAQ,EAEnBA,EAAW,KAAKG,EAAO,KAAK,CAEhC,CAAC,CACH,EACA,EACA,EAAI,CAER,CAAC,CACH,CAAC,CACH,CCzBM,SAAUC,GAA8BC,EAA8BC,EAAwB,CAClG,OAAOC,GAAsBC,GAAmCH,CAAK,EAAGC,CAAS,CACnF,CCoBM,SAAUG,GAAaC,EAA2BC,EAAwB,CAC9E,GAAID,GAAS,KAAM,CACjB,GAAIE,GAAoBF,CAAK,EAC3B,OAAOG,GAAmBH,EAAOC,CAAS,EAE5C,GAAIG,GAAYJ,CAAK,EACnB,OAAOK,GAAcL,EAAOC,CAAS,EAEvC,GAAIK,GAAUN,CAAK,EACjB,OAAOO,GAAgBP,EAAOC,CAAS,EAEzC,GAAIO,GAAgBR,CAAK,EACvB,OAAOS,GAAsBT,EAAOC,CAAS,EAE/C,GAAIS,GAAWV,CAAK,EAClB,OAAOW,GAAiBX,EAAOC,CAAS,EAE1C,GAAIW,GAAqBZ,CAAK,EAC5B,OAAOa,GAA2Bb,EAAOC,CAAS,EAGtD,MAAMa,GAAiCd,CAAK,CAC9C,CCoDM,SAAUe,GAAQC,EAA2BC,EAAyB,CAC1E,OAAOA,EAAYC,GAAUF,EAAOC,CAAS,EAAIE,EAAUH,CAAK,CAClE,CCxBM,SAAUI,GAAE,SAAIC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACpB,IAAMC,EAAYC,GAAaH,CAAI,EACnC,OAAOI,GAAKJ,EAAaE,CAAS,CACpC,CCsCM,SAAUG,GAAWC,EAA0BC,EAAyB,CAC5E,IAAMC,EAAeC,EAAWH,CAAmB,EAAIA,EAAsB,UAAA,CAAM,OAAAA,CAAA,EAC7EI,EAAO,SAACC,EAA6B,CAAK,OAAAA,EAAW,MAAMH,EAAY,CAAE,CAA/B,EAChD,OAAO,IAAII,EAAWL,EAAY,SAACI,EAAU,CAAK,OAAAJ,EAAU,SAASG,EAAa,EAAGC,CAAU,CAA7C,EAAiDD,CAAI,CACzG,CCrHM,SAAUG,GAAYC,EAAU,CACpC,OAAOA,aAAiB,MAAQ,CAAC,MAAMA,CAAY,CACrD,CCsCM,SAAUC,EAAUC,EAAyCC,EAAa,CAC9E,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAEhC,IAAIC,EAAQ,EAGZF,EAAO,UACLG,EAAyBF,EAAY,SAACG,EAAQ,CAG5CH,EAAW,KAAKJ,EAAQ,KAAKC,EAASM,EAAOF,GAAO,CAAC,CACvD,CAAC,CAAC,CAEN,CAAC,CACH,CC1DQ,IAAAG,GAAY,MAAK,QAEzB,SAASC,GAAkBC,EAA6BC,EAAW,CAC/D,OAAOH,GAAQG,CAAI,EAAID,EAAE,MAAA,OAAAE,EAAA,CAAA,EAAAC,EAAIF,CAAI,CAAA,CAAA,EAAID,EAAGC,CAAI,CAChD,CAMM,SAAUG,GAAuBJ,EAA2B,CAC9D,OAAOK,EAAI,SAAAJ,EAAI,CAAI,OAAAF,GAAYC,EAAIC,CAAI,CAApB,CAAqB,CAC5C,CCfQ,IAAAK,GAAY,MAAK,QACjBC,GAA0D,OAAM,eAArCC,GAA+B,OAAM,UAAlBC,GAAY,OAAM,KAQlE,SAAUC,GAAqDC,EAAuB,CAC1F,GAAIA,EAAK,SAAW,EAAG,CACrB,IAAMC,EAAQD,EAAK,GACnB,GAAIL,GAAQM,CAAK,EACf,MAAO,CAAE,KAAMA,EAAO,KAAM,IAAI,EAElC,GAAIC,GAAOD,CAAK,EAAG,CACjB,IAAME,EAAOL,GAAQG,CAAK,EAC1B,MAAO,CACL,KAAME,EAAK,IAAI,SAACC,EAAG,CAAK,OAAAH,EAAMG,EAAN,CAAU,EAClC,KAAID,IAKV,MAAO,CAAE,KAAMH,EAAa,KAAM,IAAI,CACxC,CAEA,SAASE,GAAOG,EAAQ,CACtB,OAAOA,GAAO,OAAOA,GAAQ,UAAYT,GAAeS,CAAG,IAAMR,EACnE,CC7BM,SAAUS,GAAaC,EAAgBC,EAAa,CACxD,OAAOD,EAAK,OAAO,SAACE,EAAQC,EAAKC,EAAC,CAAK,OAAEF,EAAOC,GAAOF,EAAOG,GAAKF,CAA5B,EAAqC,CAAA,CAAS,CACvF,CCsMM,SAAUG,GAAa,SAAoCC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAC/D,IAAMC,EAAYC,GAAaH,CAAI,EAC7BI,EAAiBC,GAAkBL,CAAI,EAEvCM,EAA8BC,GAAqBP,CAAI,EAA/CQ,EAAWF,EAAA,KAAEG,EAAIH,EAAA,KAE/B,GAAIE,EAAY,SAAW,EAIzB,OAAOE,GAAK,CAAA,EAAIR,CAAgB,EAGlC,IAAMS,EAAS,IAAIC,EACjBC,GACEL,EACAN,EACAO,EAEI,SAACK,EAAM,CAAK,OAAAC,GAAaN,EAAMK,CAAM,CAAzB,EAEZE,EAAQ,CACb,EAGH,OAAOZ,EAAkBO,EAAO,KAAKM,GAAiBb,CAAc,CAAC,EAAsBO,CAC7F,CAEM,SAAUE,GACdL,EACAN,EACAgB,EAAiD,CAAjD,OAAAA,IAAA,SAAAA,EAAAF,IAEO,SAACG,EAA2B,CAGjCC,GACElB,EACA,UAAA,CAaE,QAZQmB,EAAWb,EAAW,OAExBM,EAAS,IAAI,MAAMO,CAAM,EAG3BC,EAASD,EAITE,EAAuBF,aAGlBG,EAAC,CACRJ,GACElB,EACA,UAAA,CACE,IAAMuB,EAASf,GAAKF,EAAYgB,GAAItB,CAAgB,EAChDwB,EAAgB,GACpBD,EAAO,UACLE,EACER,EACA,SAACS,EAAK,CAEJd,EAAOU,GAAKI,EACPF,IAEHA,EAAgB,GAChBH,KAEGA,GAGHJ,EAAW,KAAKD,EAAeJ,EAAO,MAAK,CAAE,CAAC,CAElD,EACA,UAAA,CACO,EAAEQ,GAGLH,EAAW,SAAQ,CAEvB,CAAC,CACF,CAEL,EACAA,CAAU,GAjCLK,EAAI,EAAGA,EAAIH,EAAQG,MAAnBA,CAAC,CAoCZ,EACAL,CAAU,CAEd,CACF,CAMA,SAASC,GAAclB,EAAsC2B,EAAqBC,EAA0B,CACtG5B,EACF6B,GAAgBD,EAAc5B,EAAW2B,CAAO,EAEhDA,EAAO,CAEX,CC3RM,SAAUG,GACdC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAgC,CAGhC,IAAMC,EAAc,CAAA,EAEhBC,EAAS,EAETC,EAAQ,EAERC,EAAa,GAKXC,EAAgB,UAAA,CAIhBD,GAAc,CAACH,EAAO,QAAU,CAACC,GACnCR,EAAW,SAAQ,CAEvB,EAGMY,EAAY,SAACC,EAAQ,CAAK,OAACL,EAASN,EAAaY,EAAWD,CAAK,EAAIN,EAAO,KAAKM,CAAK,CAA5D,EAE1BC,EAAa,SAACD,EAAQ,CAI1BT,GAAUJ,EAAW,KAAKa,CAAY,EAItCL,IAKA,IAAIO,EAAgB,GAGpBC,EAAUf,EAAQY,EAAOJ,GAAO,CAAC,EAAE,UACjCQ,EACEjB,EACA,SAACkB,EAAU,CAGTf,GAAY,MAAZA,EAAee,CAAU,EAErBd,EAGFQ,EAAUM,CAAiB,EAG3BlB,EAAW,KAAKkB,CAAU,CAE9B,EACA,UAAA,CAGEH,EAAgB,EAClB,EAEA,OACA,UAAA,CAIE,GAAIA,EAKF,GAAI,CAIFP,IAKA,qBACE,IAAMW,EAAgBZ,EAAO,MAAK,EAI9BF,EACFe,GAAgBpB,EAAYK,EAAmB,UAAA,CAAM,OAAAS,EAAWK,CAAa,CAAxB,CAAyB,EAE9EL,EAAWK,CAAa,GARrBZ,EAAO,QAAUC,EAASN,OAYjCS,EAAa,QACNU,EAAP,CACArB,EAAW,MAAMqB,CAAG,EAG1B,CAAC,CACF,CAEL,EAGA,OAAAtB,EAAO,UACLkB,EAAyBjB,EAAYY,EAAW,UAAA,CAE9CF,EAAa,GACbC,EAAa,CACf,CAAC,CAAC,EAKG,UAAA,CACLL,GAAmB,MAAnBA,EAAmB,CACrB,CACF,CClEM,SAAUgB,GACdC,EACAC,EACAC,EAA6B,CAE7B,OAFAA,IAAA,SAAAA,EAAA,KAEIC,EAAWF,CAAc,EAEpBF,GAAS,SAACK,EAAGC,EAAC,CAAK,OAAAC,EAAI,SAACC,EAAQC,EAAU,CAAK,OAAAP,EAAeG,EAAGG,EAAGF,EAAGG,CAAE,CAA1B,CAA2B,EAAEC,EAAUT,EAAQI,EAAGC,CAAC,CAAC,CAAC,CAAjF,EAAoFH,CAAU,GAC/G,OAAOD,GAAmB,WACnCC,EAAaD,GAGRS,EAAQ,SAACC,EAAQC,EAAU,CAAK,OAAAC,GAAeF,EAAQC,EAAYZ,EAASE,CAAU,CAAtD,CAAuD,EAChG,CChCM,SAAUY,GAAyCC,EAA6B,CAA7B,OAAAA,IAAA,SAAAA,EAAA,KAChDC,GAASC,GAAUF,CAAU,CACtC,CCNM,SAAUG,IAAS,CACvB,OAAOC,GAAS,CAAC,CACnB,CCmDM,SAAUC,IAAM,SAACC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACrB,OAAOC,GAAS,EAAGC,GAAKH,EAAMI,GAAaJ,CAAI,CAAC,CAAC,CACnD,CC9DM,SAAUK,EAAsCC,EAA0B,CAC9E,OAAO,IAAIC,EAA+B,SAACC,EAAU,CACnDC,EAAUH,EAAiB,CAAE,EAAE,UAAUE,CAAU,CACrD,CAAC,CACH,CChDA,IAAME,GAA0B,CAAC,cAAe,gBAAgB,EAC1DC,GAAqB,CAAC,mBAAoB,qBAAqB,EAC/DC,GAAgB,CAAC,KAAM,KAAK,EA8N5B,SAAUC,EACdC,EACAC,EACAC,EACAC,EAAsC,CAMtC,GAJIC,EAAWF,CAAO,IACpBC,EAAiBD,EACjBA,EAAU,QAERC,EACF,OAAOJ,EAAaC,EAAQC,EAAWC,CAA+B,EAAE,KAAKG,GAAiBF,CAAc,CAAC,EAUzG,IAAAG,EAAAC,EAEJC,GAAcR,CAAM,EAChBH,GAAmB,IAAI,SAACY,EAAU,CAAK,OAAA,SAACC,EAAY,CAAK,OAAAV,EAAOS,GAAYR,EAAWS,EAASR,CAA+B,CAAtE,CAAlB,CAAyF,EAElIS,GAAwBX,CAAM,EAC5BJ,GAAwB,IAAIgB,GAAwBZ,EAAQC,CAAS,CAAC,EACtEY,GAA0Bb,CAAM,EAChCF,GAAc,IAAIc,GAAwBZ,EAAQC,CAAS,CAAC,EAC5D,CAAA,EAAE,CAAA,EATDa,EAAGR,EAAA,GAAES,EAAMT,EAAA,GAgBlB,GAAI,CAACQ,GACCE,GAAYhB,CAAM,EACpB,OAAOiB,GAAS,SAACC,EAAc,CAAK,OAAAnB,EAAUmB,EAAWjB,EAAWC,CAA+B,CAA/D,CAAgE,EAClGiB,EAAUnB,CAAM,CAAC,EAOvB,GAAI,CAACc,EACH,MAAM,IAAI,UAAU,sBAAsB,EAG5C,OAAO,IAAIM,EAAc,SAACC,EAAU,CAIlC,IAAMX,EAAU,UAAA,SAACY,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAAmB,OAAAF,EAAW,KAAK,EAAIC,EAAK,OAASA,EAAOA,EAAK,EAAE,CAAhD,EAEpC,OAAAR,EAAIJ,CAAO,EAEJ,UAAA,CAAM,OAAAK,EAAQL,CAAO,CAAf,CACf,CAAC,CACH,CASA,SAASE,GAAwBZ,EAAaC,EAAiB,CAC7D,OAAO,SAACQ,EAAkB,CAAK,OAAA,SAACC,EAAY,CAAK,OAAAV,EAAOS,GAAYR,EAAWS,CAAO,CAArC,CAAlB,CACjC,CAOA,SAASC,GAAwBX,EAAW,CAC1C,OAAOI,EAAWJ,EAAO,WAAW,GAAKI,EAAWJ,EAAO,cAAc,CAC3E,CAOA,SAASa,GAA0Bb,EAAW,CAC5C,OAAOI,EAAWJ,EAAO,EAAE,GAAKI,EAAWJ,EAAO,GAAG,CACvD,CAOA,SAASQ,GAAcR,EAAW,CAChC,OAAOI,EAAWJ,EAAO,gBAAgB,GAAKI,EAAWJ,EAAO,mBAAmB,CACrF,CC/LM,SAAUwB,GACdC,EACAC,EACAC,EAAsC,CAEtC,OAAIA,EACKH,GAAoBC,EAAYC,CAAa,EAAE,KAAKE,GAAiBD,CAAc,CAAC,EAGtF,IAAIE,EAAoB,SAACC,EAAU,CACxC,IAAMC,EAAU,UAAA,SAACC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAAc,OAAAH,EAAW,KAAKE,EAAE,SAAW,EAAIA,EAAE,GAAKA,CAAC,CAAzC,EACzBE,EAAWT,EAAWM,CAAO,EACnC,OAAOI,EAAWT,CAAa,EAAI,UAAA,CAAM,OAAAA,EAAcK,EAASG,CAAQ,CAA/B,EAAmC,MAC9E,CAAC,CACH,CCtBM,SAAUE,GACdC,EACAC,EACAC,EAAyC,CAFzCF,IAAA,SAAAA,EAAA,GAEAE,IAAA,SAAAA,EAAAC,IAIA,IAAIC,EAAmB,GAEvB,OAAIH,GAAuB,OAIrBI,GAAYJ,CAAmB,EACjCC,EAAYD,EAIZG,EAAmBH,GAIhB,IAAIK,EAAW,SAACC,EAAU,CAI/B,IAAIC,EAAMC,GAAYT,CAAO,EAAI,CAACA,EAAUE,EAAW,IAAG,EAAKF,EAE3DQ,EAAM,IAERA,EAAM,GAIR,IAAIE,EAAI,EAGR,OAAOR,EAAU,SAAS,UAAA,CACnBK,EAAW,SAEdA,EAAW,KAAKG,GAAG,EAEf,GAAKN,EAGP,KAAK,SAAS,OAAWA,CAAgB,EAGzCG,EAAW,SAAQ,EAGzB,EAAGC,CAAG,CACR,CAAC,CACH,CChGM,SAAUG,GAAK,SAACC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACpB,IAAMC,EAAYC,GAAaH,CAAI,EAC7BI,EAAaC,GAAUL,EAAM,GAAQ,EACrCM,EAAUN,EAChB,OAAQM,EAAQ,OAGZA,EAAQ,SAAW,EAEnBC,EAAUD,EAAQ,EAAE,EAEpBE,GAASJ,CAAU,EAAEK,GAAKH,EAASJ,CAAS,CAAC,EAL7CQ,CAMN,CCjEO,IAAMC,GAAQ,IAAIC,EAAkBC,EAAI,ECpCvC,IAAAC,GAAY,MAAK,QAMnB,SAAUC,GAAkBC,EAAiB,CACjD,OAAOA,EAAK,SAAW,GAAKF,GAAQE,EAAK,EAAE,EAAIA,EAAK,GAAMA,CAC5D,CCoDM,SAAUC,EAAUC,EAAiDC,EAAa,CACtF,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAEhC,IAAIC,EAAQ,EAIZF,EAAO,UAILG,EAAyBF,EAAY,SAACG,EAAK,CAAK,OAAAP,EAAU,KAAKC,EAASM,EAAOF,GAAO,GAAKD,EAAW,KAAKG,CAAK,CAAhE,CAAiE,CAAC,CAEtH,CAAC,CACH,CCxBM,SAAUC,IAAG,SAACC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAClB,IAAMC,EAAiBC,GAAkBH,CAAI,EAEvCI,EAAUC,GAAeL,CAAI,EAEnC,OAAOI,EAAQ,OACX,IAAIE,EAAsB,SAACC,EAAU,CAGnC,IAAIC,EAAuBJ,EAAQ,IAAI,UAAA,CAAM,MAAA,CAAA,CAAA,CAAE,EAK3CK,EAAYL,EAAQ,IAAI,UAAA,CAAM,MAAA,EAAA,CAAK,EAGvCG,EAAW,IAAI,UAAA,CACbC,EAAUC,EAAY,IACxB,CAAC,EAKD,mBAASC,EAAW,CAClBC,EAAUP,EAAQM,EAAY,EAAE,UAC9BE,EACEL,EACA,SAACM,EAAK,CAKJ,GAJAL,EAAQE,GAAa,KAAKG,CAAK,EAI3BL,EAAQ,MAAM,SAACM,EAAM,CAAK,OAAAA,EAAO,MAAP,CAAa,EAAG,CAC5C,IAAMC,EAAcP,EAAQ,IAAI,SAACM,EAAM,CAAK,OAAAA,EAAO,MAAK,CAAZ,CAAe,EAE3DP,EAAW,KAAKL,EAAiBA,EAAc,MAAA,OAAAc,EAAA,CAAA,EAAAC,EAAIF,CAAM,CAAA,CAAA,EAAIA,CAAM,EAI/DP,EAAQ,KAAK,SAACM,EAAQI,EAAC,CAAK,MAAA,CAACJ,EAAO,QAAUL,EAAUS,EAA5B,CAA8B,GAC5DX,EAAW,SAAQ,EAGzB,EACA,UAAA,CAGEE,EAAUC,GAAe,GAIzB,CAACF,EAAQE,GAAa,QAAUH,EAAW,SAAQ,CACrD,CAAC,CACF,GA9BIG,EAAc,EAAG,CAACH,EAAW,QAAUG,EAAcN,EAAQ,OAAQM,MAArEA,CAAW,EAmCpB,OAAO,UAAA,CACLF,EAAUC,EAAY,IACxB,CACF,CAAC,EACDU,CACN,CC9DM,SAAUC,GAASC,EAAoD,CAC3E,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAW,GACXC,EAAsB,KACtBC,EAA6C,KAC7CC,EAAa,GAEXC,EAAc,UAAA,CAGlB,GAFAF,GAAkB,MAAlBA,EAAoB,YAAW,EAC/BA,EAAqB,KACjBF,EAAU,CACZA,EAAW,GACX,IAAMK,EAAQJ,EACdA,EAAY,KACZF,EAAW,KAAKM,CAAK,EAEvBF,GAAcJ,EAAW,SAAQ,CACnC,EAEMO,EAAkB,UAAA,CACtBJ,EAAqB,KACrBC,GAAcJ,EAAW,SAAQ,CACnC,EAEAD,EAAO,UACLS,EACER,EACA,SAACM,EAAK,CACJL,EAAW,GACXC,EAAYI,EACPH,GACHM,EAAUZ,EAAiBS,CAAK,CAAC,EAAE,UAChCH,EAAqBK,EAAyBR,EAAYK,EAAaE,CAAe,CAAE,CAG/F,EACA,UAAA,CACEH,EAAa,IACZ,CAACH,GAAY,CAACE,GAAsBA,EAAmB,SAAWH,EAAW,SAAQ,CACxF,CAAC,CACF,CAEL,CAAC,CACH,CC3CM,SAAUU,GAAaC,EAAkBC,EAAyC,CAAzC,OAAAA,IAAA,SAAAA,EAAAC,IACtCC,GAAM,UAAA,CAAM,OAAAC,GAAMJ,EAAUC,CAAS,CAAzB,CAA0B,CAC/C,CCEM,SAAUI,GAAeC,EAAoBC,EAAsC,CAAtC,OAAAA,IAAA,SAAAA,EAAA,MAGjDA,EAAmBA,GAAgB,KAAhBA,EAAoBD,EAEhCE,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAiB,CAAA,EACjBC,EAAQ,EAEZH,EAAO,UACLI,EACEH,EACA,SAACI,EAAK,aACAC,EAAuB,KAKvBH,IAAUL,IAAsB,GAClCI,EAAQ,KAAK,CAAA,CAAE,MAIjB,QAAqBK,EAAAC,GAAAN,CAAO,EAAAO,EAAAF,EAAA,KAAA,EAAA,CAAAE,EAAA,KAAAA,EAAAF,EAAA,KAAA,EAAE,CAAzB,IAAMG,EAAMD,EAAA,MACfC,EAAO,KAAKL,CAAK,EAMbR,GAAca,EAAO,SACvBJ,EAASA,GAAM,KAANA,EAAU,CAAA,EACnBA,EAAO,KAAKI,CAAM,qGAItB,GAAIJ,MAIF,QAAqBK,EAAAH,GAAAF,CAAM,EAAAM,EAAAD,EAAA,KAAA,EAAA,CAAAC,EAAA,KAAAA,EAAAD,EAAA,KAAA,EAAE,CAAxB,IAAMD,EAAME,EAAA,MACfC,GAAUX,EAASQ,CAAM,EACzBT,EAAW,KAAKS,CAAM,oGAG5B,EACA,UAAA,aAGE,QAAqBI,EAAAN,GAAAN,CAAO,EAAAa,EAAAD,EAAA,KAAA,EAAA,CAAAC,EAAA,KAAAA,EAAAD,EAAA,KAAA,EAAE,CAAzB,IAAMJ,EAAMK,EAAA,MACfd,EAAW,KAAKS,CAAM,oGAExBT,EAAW,SAAQ,CACrB,EAEA,OACA,UAAA,CAEEC,EAAU,IACZ,CAAC,CACF,CAEL,CAAC,CACH,CCbM,SAAUc,GACdC,EAAgD,CAEhD,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAgC,KAChCC,EAAY,GACZC,EAEJF,EAAWF,EAAO,UAChBK,EAAyBJ,EAAY,OAAW,OAAW,SAACK,EAAG,CAC7DF,EAAgBG,EAAUT,EAASQ,EAAKT,GAAWC,CAAQ,EAAEE,CAAM,CAAC,CAAC,EACjEE,GACFA,EAAS,YAAW,EACpBA,EAAW,KACXE,EAAc,UAAUH,CAAU,GAIlCE,EAAY,EAEhB,CAAC,CAAC,EAGAA,IAMFD,EAAS,YAAW,EACpBA,EAAW,KACXE,EAAe,UAAUH,CAAU,EAEvC,CAAC,CACH,CC/HM,SAAUO,GACdC,EACAC,EACAC,EACAC,EACAC,EAAqC,CAErC,OAAO,SAACC,EAAuBC,EAA2B,CAIxD,IAAIC,EAAWL,EAIXM,EAAaP,EAEbQ,EAAQ,EAGZJ,EAAO,UACLK,EACEJ,EACA,SAACK,EAAK,CAEJ,IAAMC,EAAIH,IAEVD,EAAQD,EAEJP,EAAYQ,EAAOG,EAAOC,CAAC,GAIzBL,EAAW,GAAOI,GAGxBR,GAAcG,EAAW,KAAKE,CAAK,CACrC,EAGAJ,GACG,UAAA,CACCG,GAAYD,EAAW,KAAKE,CAAK,EACjCF,EAAW,SAAQ,CACrB,CAAE,CACL,CAEL,CACF,CCnCM,SAAUO,IAAa,SAAOC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAClC,IAAMC,EAAiBC,GAAkBH,CAAI,EAC7C,OAAOE,EACHE,GAAKL,GAAa,MAAA,OAAAM,EAAA,CAAA,EAAAC,EAAKN,CAAoC,CAAA,CAAA,EAAGO,GAAiBL,CAAc,CAAC,EAC9FM,EAAQ,SAACC,EAAQC,EAAU,CACzBC,GAAiBN,EAAA,CAAEI,CAAM,EAAAH,EAAKM,GAAeZ,CAAI,CAAC,CAAA,CAAA,EAAGU,CAAU,CACjE,CAAC,CACP,CCUM,SAAUG,IAAiB,SAC/BC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAEA,OAAOC,GAAa,MAAA,OAAAC,EAAA,CAAA,EAAAC,EAAIJ,CAAY,CAAA,CAAA,CACtC,CC+BM,SAAUK,GACdC,EACAC,EAA6G,CAE7G,OAAOC,EAAWD,CAAc,EAAIE,GAASH,EAASC,EAAgB,CAAC,EAAIE,GAASH,EAAS,CAAC,CAChG,CCpBM,SAAUI,GAAgBC,EAAiBC,EAAyC,CAAzC,OAAAA,IAAA,SAAAA,EAAAC,IACxCC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAkC,KAClCC,EAAsB,KACtBC,EAA0B,KAExBC,EAAO,UAAA,CACX,GAAIH,EAAY,CAEdA,EAAW,YAAW,EACtBA,EAAa,KACb,IAAMI,EAAQH,EACdA,EAAY,KACZF,EAAW,KAAKK,CAAK,EAEzB,EACA,SAASC,GAAY,CAInB,IAAMC,EAAaJ,EAAYR,EACzBa,EAAMZ,EAAU,IAAG,EACzB,GAAIY,EAAMD,EAAY,CAEpBN,EAAa,KAAK,SAAS,OAAWM,EAAaC,CAAG,EACtDR,EAAW,IAAIC,CAAU,EACzB,OAGFG,EAAI,CACN,CAEAL,EAAO,UACLU,EACET,EACA,SAACK,EAAQ,CACPH,EAAYG,EACZF,EAAWP,EAAU,IAAG,EAGnBK,IACHA,EAAaL,EAAU,SAASU,EAAcX,CAAO,EACrDK,EAAW,IAAIC,CAAU,EAE7B,EACA,UAAA,CAGEG,EAAI,EACJJ,EAAW,SAAQ,CACrB,EAEA,OACA,UAAA,CAEEE,EAAYD,EAAa,IAC3B,CAAC,CACF,CAEL,CAAC,CACH,CCpFM,SAAUS,GAAqBC,EAAe,CAClD,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAW,GACfF,EAAO,UACLG,EACEF,EACA,SAACG,EAAK,CACJF,EAAW,GACXD,EAAW,KAAKG,CAAK,CACvB,EACA,UAAA,CACOF,GACHD,EAAW,KAAKH,CAAa,EAE/BG,EAAW,SAAQ,CACrB,CAAC,CACF,CAEL,CAAC,CACH,CCXM,SAAUI,GAAQC,EAAa,CACnC,OAAOA,GAAS,EAEZ,UAAA,CAAM,OAAAC,CAAA,EACNC,EAAQ,SAACC,EAAQC,EAAU,CACzB,IAAIC,EAAO,EACXF,EAAO,UACLG,EAAyBF,EAAY,SAACG,EAAK,CAIrC,EAAEF,GAAQL,IACZI,EAAW,KAAKG,CAAK,EAIjBP,GAASK,GACXD,EAAW,SAAQ,EAGzB,CAAC,CAAC,CAEN,CAAC,CACP,CC9BM,SAAUI,IAAc,CAC5B,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChCD,EAAO,UAAUE,EAAyBD,EAAYE,EAAI,CAAC,CAC7D,CAAC,CACH,CCCM,SAAUC,GAASC,EAAQ,CAC/B,OAAOC,EAAI,UAAA,CAAM,OAAAD,CAAA,CAAK,CACxB,CCyCM,SAAUE,GACdC,EACAC,EAAmC,CAEnC,OAAIA,EAEK,SAACC,EAAqB,CAC3B,OAAAC,GAAOF,EAAkB,KAAKG,GAAK,CAAC,EAAGC,GAAc,CAAE,EAAGH,EAAO,KAAKH,GAAUC,CAAqB,CAAC,CAAC,CAAvG,EAGGM,GAAS,SAACC,EAAOC,EAAK,CAAK,OAAAR,EAAsBO,EAAOC,CAAK,EAAE,KAAKJ,GAAK,CAAC,EAAGK,GAAMF,CAAK,CAAC,CAA9D,CAA+D,CACnG,CCtCM,SAAUG,GAASC,EAAoBC,EAAyC,CAAzCA,IAAA,SAAAA,EAAAC,IAC3C,IAAMC,EAAWC,GAAMJ,EAAKC,CAAS,EACrC,OAAOI,GAAU,UAAA,CAAM,OAAAF,CAAA,CAAQ,CACjC,CC0EM,SAAUG,EACdC,EACAC,EAA0D,CAA1D,OAAAA,IAAA,SAAAA,EAA+BC,IAK/BF,EAAaA,GAAU,KAAVA,EAAcG,GAEpBC,EAAQ,SAACC,EAAQC,EAAU,CAGhC,IAAIC,EAEAC,EAAQ,GAEZH,EAAO,UACLI,EAAyBH,EAAY,SAACI,EAAK,CAEzC,IAAMC,EAAaV,EAAYS,CAAK,GAKhCF,GAAS,CAACR,EAAYO,EAAaI,CAAU,KAM/CH,EAAQ,GACRD,EAAcI,EAGdL,EAAW,KAAKI,CAAK,EAEzB,CAAC,CAAC,CAEN,CAAC,CACH,CAEA,SAASP,GAAeS,EAAQC,EAAM,CACpC,OAAOD,IAAMC,CACf,CCjHM,SAAUC,EAA8CC,EAAQC,EAAuC,CAC3G,OAAOC,EAAqB,SAACC,EAAMC,EAAI,CAAK,OAAAH,EAAUA,EAAQE,EAAEH,GAAMI,EAAEJ,EAAI,EAAIG,EAAEH,KAASI,EAAEJ,EAAjD,CAAqD,CACnG,CCLM,SAAUK,IAAO,SAAIC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACzB,OAAO,SAACC,EAAqB,CAAK,OAAAC,GAAOD,EAAQE,EAAE,MAAA,OAAAC,EAAA,CAAA,EAAAC,EAAIN,CAAM,CAAA,CAAA,CAAA,CAA3B,CACpC,CCHM,SAAUO,EAAYC,EAAoB,CAC9C,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAGhC,GAAI,CACFD,EAAO,UAAUC,CAAU,UAE3BA,EAAW,IAAIH,CAAQ,EAE3B,CAAC,CACH,CC9BM,SAAUI,GAAYC,EAAa,CACvC,OAAOA,GAAS,EACZ,UAAA,CAAM,OAAAC,CAAA,EACNC,EAAQ,SAACC,EAAQC,EAAU,CAKzB,IAAIC,EAAc,CAAA,EAClBF,EAAO,UACLG,EACEF,EACA,SAACG,EAAK,CAEJF,EAAO,KAAKE,CAAK,EAGjBP,EAAQK,EAAO,QAAUA,EAAO,MAAK,CACvC,EACA,UAAA,aAGE,QAAoBG,EAAAC,GAAAJ,CAAM,EAAAK,EAAAF,EAAA,KAAA,EAAA,CAAAE,EAAA,KAAAA,EAAAF,EAAA,KAAA,EAAE,CAAvB,IAAMD,EAAKG,EAAA,MACdN,EAAW,KAAKG,CAAK,oGAEvBH,EAAW,SAAQ,CACrB,EAEA,OACA,UAAA,CAEEC,EAAS,IACX,CAAC,CACF,CAEL,CAAC,CACP,CC1DM,SAAUM,IAAK,SAAIC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACvB,IAAMC,EAAYC,GAAaH,CAAI,EAC7BI,EAAaC,GAAUL,EAAM,GAAQ,EAC3C,OAAAA,EAAOM,GAAeN,CAAI,EAEnBO,EAAQ,SAACC,EAAQC,EAAU,CAChCC,GAASN,CAAU,EAAEO,GAAIC,EAAA,CAAEJ,CAAM,EAAAK,EAAMb,CAA6B,CAAA,EAAGE,CAAS,CAAC,EAAE,UAAUO,CAAU,CACzG,CAAC,CACH,CCcM,SAAUK,IAAS,SACvBC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAEA,OAAOC,GAAK,MAAA,OAAAC,EAAA,CAAA,EAAAC,EAAIJ,CAAY,CAAA,CAAA,CAC9B,CCmEM,SAAUK,GAAUC,EAAqC,OACzDC,EAAQ,IACRC,EAEJ,OAAIF,GAAiB,OACf,OAAOA,GAAkB,UACxBG,EAA4BH,EAAa,MAAzCC,EAAKE,IAAA,OAAG,IAAQA,EAAED,EAAUF,EAAa,OAE5CC,EAAQD,GAILC,GAAS,EACZ,UAAA,CAAM,OAAAG,CAAA,EACNC,EAAQ,SAACC,EAAQC,EAAU,CACzB,IAAIC,EAAQ,EACRC,EAEEC,EAAc,UAAA,CAGlB,GAFAD,GAAS,MAATA,EAAW,YAAW,EACtBA,EAAY,KACRP,GAAS,KAAM,CACjB,IAAMS,EAAW,OAAOT,GAAU,SAAWU,GAAMV,CAAK,EAAIW,EAAUX,EAAMM,CAAK,CAAC,EAC5EM,EAAqBC,EAAyBR,EAAY,UAAA,CAC9DO,EAAmB,YAAW,EAC9BE,EAAiB,CACnB,CAAC,EACDL,EAAS,UAAUG,CAAkB,OAErCE,EAAiB,CAErB,EAEMA,EAAoB,UAAA,CACxB,IAAIC,EAAY,GAChBR,EAAYH,EAAO,UACjBS,EAAyBR,EAAY,OAAW,UAAA,CAC1C,EAAEC,EAAQP,EACRQ,EACFC,EAAW,EAEXO,EAAY,GAGdV,EAAW,SAAQ,CAEvB,CAAC,CAAC,EAGAU,GACFP,EAAW,CAEf,EAEAM,EAAiB,CACnB,CAAC,CACP,CC7HM,SAAUE,GAAUC,EAAyB,CACjD,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAW,GACXC,EAAsB,KAC1BH,EAAO,UACLI,EAAyBH,EAAY,SAACI,EAAK,CACzCH,EAAW,GACXC,EAAYE,CACd,CAAC,CAAC,EAEJP,EAAS,UACPM,EACEH,EACA,UAAA,CACE,GAAIC,EAAU,CACZA,EAAW,GACX,IAAMG,EAAQF,EACdA,EAAY,KACZF,EAAW,KAAKI,CAAK,EAEzB,EACAC,EAAI,CACL,CAEL,CAAC,CACH,CCgBM,SAAUC,GAAcC,EAA6DC,EAAQ,CAMjG,OAAOC,EAAQC,GAAcH,EAAaC,EAAW,UAAU,QAAU,EAAG,EAAI,CAAC,CACnF,CCgDM,SAAUG,GAASC,EAA4B,CAA5BA,IAAA,SAAAA,EAAA,CAAA,GACf,IAAAC,EAAgHD,EAAO,UAAvHE,EAASD,IAAA,OAAG,UAAA,CAAM,OAAA,IAAIE,CAAJ,EAAgBF,EAAEG,EAA4EJ,EAAO,aAAnFK,EAAYD,IAAA,OAAG,GAAIA,EAAEE,EAAuDN,EAAO,gBAA9DO,EAAeD,IAAA,OAAG,GAAIA,EAAEE,EAA+BR,EAAO,oBAAtCS,EAAmBD,IAAA,OAAG,GAAIA,EAUnH,OAAO,SAACE,EAAa,CACnB,IAAIC,EACAC,EACAC,EACAC,EAAW,EACXC,EAAe,GACfC,EAAa,GAEXC,EAAc,UAAA,CAClBL,GAAe,MAAfA,EAAiB,YAAW,EAC5BA,EAAkB,MACpB,EAGMM,EAAQ,UAAA,CACZD,EAAW,EACXN,EAAaE,EAAU,OACvBE,EAAeC,EAAa,EAC9B,EACMG,EAAsB,UAAA,CAG1B,IAAMC,EAAOT,EACbO,EAAK,EACLE,GAAI,MAAJA,EAAM,YAAW,CACnB,EAEA,OAAOC,EAAc,SAACC,EAAQC,GAAU,CACtCT,IACI,CAACE,GAAc,CAACD,GAClBE,EAAW,EAOb,IAAMO,GAAQX,EAAUA,GAAO,KAAPA,EAAWX,EAAS,EAO5CqB,GAAW,IAAI,UAAA,CACbT,IAKIA,IAAa,GAAK,CAACE,GAAc,CAACD,IACpCH,EAAkBa,GAAYN,EAAqBV,CAAmB,EAE1E,CAAC,EAIDe,GAAK,UAAUD,EAAU,EAGvB,CAACZ,GAIDG,EAAW,IAOXH,EAAa,IAAIe,GAAe,CAC9B,KAAM,SAACC,GAAK,CAAK,OAAAH,GAAK,KAAKG,EAAK,CAAf,EACjB,MAAO,SAACC,GAAG,CACTZ,EAAa,GACbC,EAAW,EACXL,EAAkBa,GAAYP,EAAOb,EAAcuB,EAAG,EACtDJ,GAAK,MAAMI,EAAG,CAChB,EACA,SAAU,UAAA,CACRb,EAAe,GACfE,EAAW,EACXL,EAAkBa,GAAYP,EAAOX,CAAe,EACpDiB,GAAK,SAAQ,CACf,EACD,EACDK,EAAUP,CAAM,EAAE,UAAUX,CAAU,EAE1C,CAAC,EAAED,CAAa,CAClB,CACF,CAEA,SAASe,GACPP,EACAY,EAA+C,SAC/CC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,EAAA,GAAA,UAAAA,GAEA,GAAIF,IAAO,GAAM,CACfZ,EAAK,EACL,OAGF,GAAIY,IAAO,GAIX,KAAMG,EAAe,IAAIP,GAAe,CACtC,KAAM,UAAA,CACJO,EAAa,YAAW,EACxBf,EAAK,CACP,EACD,EAED,OAAOY,EAAE,MAAA,OAAAI,EAAA,CAAA,EAAAC,EAAIJ,CAAI,CAAA,CAAA,EAAE,UAAUE,CAAY,EAC3C,CCjHM,SAAUG,EACdC,EACAC,EACAC,EAAyB,WAErBC,EACAC,EAAW,GACf,OAAIJ,GAAsB,OAAOA,GAAuB,UACnDK,EAA8EL,EAAkB,WAAhGG,EAAUE,IAAA,OAAG,IAAQA,EAAEC,EAAuDN,EAAkB,WAAzEC,EAAUK,IAAA,OAAG,IAAQA,EAAEC,EAAgCP,EAAkB,SAAlDI,EAAQG,IAAA,OAAG,GAAKA,EAAEL,EAAcF,EAAkB,WAEnGG,EAAcH,GAAkB,KAAlBA,EAAsB,IAE/BQ,GAAS,CACd,UAAW,UAAA,CAAM,OAAA,IAAIC,GAAcN,EAAYF,EAAYC,CAAS,CAAnD,EACjB,aAAc,GACd,gBAAiB,GACjB,oBAAqBE,EACtB,CACH,CCxIM,SAAUM,GAAQC,EAAa,CACnC,OAAOC,EAAO,SAACC,EAAGC,EAAK,CAAK,OAAAH,GAASG,CAAT,CAAc,CAC5C,CCWM,SAAUC,GAAaC,EAAyB,CACpD,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAS,GAEPC,EAAiBC,EACrBH,EACA,UAAA,CACEE,GAAc,MAAdA,EAAgB,YAAW,EAC3BD,EAAS,EACX,EACAG,EAAI,EAGNC,EAAUR,CAAQ,EAAE,UAAUK,CAAc,EAE5CH,EAAO,UAAUI,EAAyBH,EAAY,SAACM,EAAK,CAAK,OAAAL,GAAUD,EAAW,KAAKM,CAAK,CAA/B,CAAgC,CAAC,CACpG,CAAC,CACH,CCRM,SAAUC,GAAS,SAAOC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GAC9B,IAAMC,EAAYC,GAAaH,CAAM,EACrC,OAAOI,EAAQ,SAACC,EAAQC,EAAU,EAI/BJ,EAAYK,GAAOP,EAAQK,EAAQH,CAAS,EAAIK,GAAOP,EAAQK,CAAM,GAAG,UAAUC,CAAU,CAC/F,CAAC,CACH,CCmBM,SAAUE,EACdC,EACAC,EAA6G,CAE7G,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAyD,KACzDC,EAAQ,EAERC,EAAa,GAIXC,EAAgB,UAAA,CAAM,OAAAD,GAAc,CAACF,GAAmBD,EAAW,SAAQ,CAArD,EAE5BD,EAAO,UACLM,EACEL,EACA,SAACM,EAAK,CAEJL,GAAe,MAAfA,EAAiB,YAAW,EAC5B,IAAIM,EAAa,EACXC,EAAaN,IAEnBO,EAAUb,EAAQU,EAAOE,CAAU,CAAC,EAAE,UACnCP,EAAkBI,EACjBL,EAIA,SAACU,EAAU,CAAK,OAAAV,EAAW,KAAKH,EAAiBA,EAAeS,EAAOI,EAAYF,EAAYD,GAAY,EAAIG,CAAU,CAAzG,EAChB,UAAA,CAIET,EAAkB,KAClBG,EAAa,CACf,CAAC,CACD,CAEN,EACA,UAAA,CACED,EAAa,GACbC,EAAa,CACf,CAAC,CACF,CAEL,CAAC,CACH,CCvFM,SAAUO,GAAaC,EAA8B,CACzD,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChCC,EAAUJ,CAAQ,EAAE,UAAUK,EAAyBF,EAAY,UAAA,CAAM,OAAAA,EAAW,SAAQ,CAAnB,EAAuBG,EAAI,CAAC,EACrG,CAACH,EAAW,QAAUD,EAAO,UAAUC,CAAU,CACnD,CAAC,CACH,CCIM,SAAUI,GAAaC,EAAiDC,EAAiB,CAAjB,OAAAA,IAAA,SAAAA,EAAA,IACrEC,EAAQ,SAACC,EAAQC,EAAU,CAChC,IAAIC,EAAQ,EACZF,EAAO,UACLG,EAAyBF,EAAY,SAACG,EAAK,CACzC,IAAMC,EAASR,EAAUO,EAAOF,GAAO,GACtCG,GAAUP,IAAcG,EAAW,KAAKG,CAAK,EAC9C,CAACC,GAAUJ,EAAW,SAAQ,CAChC,CAAC,CAAC,CAEN,CAAC,CACH,CCyCM,SAAUK,EACdC,EACAC,EACAC,EAA8B,CAK9B,IAAMC,EACJC,EAAWJ,CAAc,GAAKC,GAASC,EAElC,CAAE,KAAMF,EAA2E,MAAKC,EAAE,SAAQC,CAAA,EACnGF,EAEN,OAAOG,EACHE,EAAQ,SAACC,EAAQC,EAAU,QACzBC,EAAAL,EAAY,aAAS,MAAAK,IAAA,QAAAA,EAAA,KAArBL,CAAW,EACX,IAAIM,EAAU,GACdH,EAAO,UACLI,EACEH,EACA,SAACI,EAAK,QACJH,EAAAL,EAAY,QAAI,MAAAK,IAAA,QAAAA,EAAA,KAAhBL,EAAmBQ,CAAK,EACxBJ,EAAW,KAAKI,CAAK,CACvB,EACA,UAAA,OACEF,EAAU,IACVD,EAAAL,EAAY,YAAQ,MAAAK,IAAA,QAAAA,EAAA,KAApBL,CAAW,EACXI,EAAW,SAAQ,CACrB,EACA,SAACK,EAAG,OACFH,EAAU,IACVD,EAAAL,EAAY,SAAK,MAAAK,IAAA,QAAAA,EAAA,KAAjBL,EAAoBS,CAAG,EACvBL,EAAW,MAAMK,CAAG,CACtB,EACA,UAAA,SACMH,KACFD,EAAAL,EAAY,eAAW,MAAAK,IAAA,QAAAA,EAAA,KAAvBL,CAAW,IAEbU,EAAAV,EAAY,YAAQ,MAAAU,IAAA,QAAAA,EAAA,KAApBV,CAAW,CACb,CAAC,CACF,CAEL,CAAC,EAIDW,EACN,CC9IO,IAAMC,GAAwC,CACnD,QAAS,GACT,SAAU,IAiDN,SAAUC,GACdC,EACAC,EAA8C,CAA9C,OAAAA,IAAA,SAAAA,EAAAH,IAEOI,EAAQ,SAACC,EAAQC,EAAU,CACxB,IAAAC,EAAsBJ,EAAM,QAAnBK,EAAaL,EAAM,SAChCM,EAAW,GACXC,EAAsB,KACtBC,EAAiC,KACjCC,EAAa,GAEXC,EAAgB,UAAA,CACpBF,GAAS,MAATA,EAAW,YAAW,EACtBA,EAAY,KACRH,IACFM,EAAI,EACJF,GAAcN,EAAW,SAAQ,EAErC,EAEMS,EAAoB,UAAA,CACxBJ,EAAY,KACZC,GAAcN,EAAW,SAAQ,CACnC,EAEMU,EAAgB,SAACC,EAAQ,CAC7B,OAACN,EAAYO,EAAUhB,EAAiBe,CAAK,CAAC,EAAE,UAAUE,EAAyBb,EAAYO,EAAeE,CAAiB,CAAC,CAAhI,EAEID,EAAO,UAAA,CACX,GAAIL,EAAU,CAIZA,EAAW,GACX,IAAMQ,EAAQP,EACdA,EAAY,KAEZJ,EAAW,KAAKW,CAAK,EACrB,CAACL,GAAcI,EAAcC,CAAK,EAEtC,EAEAZ,EAAO,UACLc,EACEb,EAMA,SAACW,EAAK,CACJR,EAAW,GACXC,EAAYO,EACZ,EAAEN,GAAa,CAACA,EAAU,UAAYJ,EAAUO,EAAI,EAAKE,EAAcC,CAAK,EAC9E,EACA,UAAA,CACEL,EAAa,GACb,EAAEJ,GAAYC,GAAYE,GAAa,CAACA,EAAU,SAAWL,EAAW,SAAQ,CAClF,CAAC,CACF,CAEL,CAAC,CACH,CCvEM,SAAUc,GACdC,EACAC,EACAC,EAA8B,CAD9BD,IAAA,SAAAA,EAAAE,IACAD,IAAA,SAAAA,EAAAE,IAEA,IAAMC,EAAYC,GAAMN,EAAUC,CAAS,EAC3C,OAAOM,GAAS,UAAA,CAAM,OAAAF,CAAA,EAAWH,CAAM,CACzC,CCJM,SAAUM,IAAc,SAAOC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACnC,IAAMC,EAAUC,GAAkBH,CAAM,EAExC,OAAOI,EAAQ,SAACC,EAAQC,EAAU,CAehC,QAdMC,EAAMP,EAAO,OACbQ,EAAc,IAAI,MAAMD,CAAG,EAI7BE,EAAWT,EAAO,IAAI,UAAA,CAAM,MAAA,EAAA,CAAK,EAGjCU,EAAQ,cAMHC,EAAC,CACRC,EAAUZ,EAAOW,EAAE,EAAE,UACnBE,EACEP,EACA,SAACQ,EAAK,CACJN,EAAYG,GAAKG,EACb,CAACJ,GAAS,CAACD,EAASE,KAEtBF,EAASE,GAAK,IAKbD,EAAQD,EAAS,MAAMM,EAAQ,KAAON,EAAW,MAEtD,EAGAO,EAAI,CACL,GAnBIL,EAAI,EAAGA,EAAIJ,EAAKI,MAAhBA,CAAC,EAwBVN,EAAO,UACLQ,EAAyBP,EAAY,SAACQ,EAAK,CACzC,GAAIJ,EAAO,CAET,IAAMO,EAAMC,EAAA,CAAIJ,CAAK,EAAAK,EAAKX,CAAW,CAAA,EACrCF,EAAW,KAAKJ,EAAUA,EAAO,MAAA,OAAAgB,EAAA,CAAA,EAAAC,EAAIF,CAAM,CAAA,CAAA,EAAIA,CAAM,EAEzD,CAAC,CAAC,CAEN,CAAC,CACH,CCxFM,SAAUG,IAAG,SAAOC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACxB,OAAOC,EAAQ,SAACC,EAAQC,EAAU,CAChCL,GAAS,MAAA,OAAAM,EAAA,CAACF,CAA8B,EAAAG,EAAMN,CAAuC,CAAA,CAAA,EAAE,UAAUI,CAAU,CAC7G,CAAC,CACH,CCCM,SAAUG,IAAO,SAAkCC,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAD,EAAAC,GAAA,UAAAA,GACvD,OAAOC,GAAG,MAAA,OAAAC,EAAA,CAAA,EAAAC,EAAIJ,CAAW,CAAA,CAAA,CAC3B,CCYO,SAASK,IAAmC,CACjD,IAAMC,EAAY,IAAIC,GAAwB,CAAC,EAC/C,OAAAC,EAAU,SAAU,mBAAoB,CAAE,KAAM,EAAK,CAAC,EACnD,UAAU,IAAMF,EAAU,KAAK,QAAQ,CAAC,EAGpCA,CACT,CCHO,SAASG,EACdC,EAAkBC,EAAmB,SAChC,CACL,OAAO,MAAM,KAAKA,EAAK,iBAAoBD,CAAQ,CAAC,CACtD,CAuBO,SAASE,EACdF,EAAkBC,EAAmB,SAClC,CACH,IAAME,EAAKC,GAAsBJ,EAAUC,CAAI,EAC/C,GAAI,OAAOE,GAAO,YAChB,MAAM,IAAI,eACR,8BAA8BH,kBAChC,EAGF,OAAOG,CACT,CAsBO,SAASC,GACdJ,EAAkBC,EAAmB,SACtB,CACf,OAAOA,EAAK,cAAiBD,CAAQ,GAAK,MAC5C,CAOO,SAASK,IAA4C,CAC1D,OAAO,SAAS,yBAAyB,aACrC,SAAS,eAAiB,MAEhC,CClEO,SAASC,GACdC,EACqB,CACrB,OAAOC,EACLC,EAAU,SAAS,KAAM,SAAS,EAClCA,EAAU,SAAS,KAAM,UAAU,CACrC,EACG,KACCC,GAAa,CAAC,EACdC,EAAI,IAAM,CACR,IAAMC,EAASC,GAAiB,EAChC,OAAO,OAAOD,GAAW,YACrBL,EAAG,SAASK,CAAM,EAClB,EACN,CAAC,EACDE,EAAUP,IAAOM,GAAiB,CAAC,EACnCE,EAAqB,CACvB,CACJ,CChBO,SAASC,GACdC,EACe,CACf,MAAO,CACL,EAAGA,EAAG,WACN,EAAGA,EAAG,SACR,CACF,CAWO,SAASC,GACdD,EAC2B,CAC3B,OAAOE,EACLC,EAAU,OAAQ,MAAM,EACxBA,EAAU,OAAQ,QAAQ,CAC5B,EACG,KACCC,GAAU,EAAGC,EAAuB,EACpCC,EAAI,IAAMP,GAAiBC,CAAE,CAAC,EAC9BO,EAAUR,GAAiBC,CAAE,CAAC,CAChC,CACJ,CCxCO,SAASQ,GACdC,EACe,CACf,MAAO,CACL,EAAGA,EAAG,WACN,EAAGA,EAAG,SACR,CACF,CAWO,SAASC,GACdD,EAC2B,CAC3B,OAAOE,EACLC,EAAUH,EAAI,QAAQ,EACtBG,EAAU,OAAQ,QAAQ,CAC5B,EACG,KACCC,GAAU,EAAGC,EAAuB,EACpCC,EAAI,IAAMP,GAAwBC,CAAE,CAAC,EACrCO,EAAUR,GAAwBC,CAAE,CAAC,CACvC,CACJ,CCpEA,IAAIQ,GAAW,UAAY,CACvB,GAAI,OAAO,KAAQ,YACf,OAAO,IASX,SAASC,EAASC,EAAKC,EAAK,CACxB,IAAIC,EAAS,GACb,OAAAF,EAAI,KAAK,SAAUG,EAAOC,EAAO,CAC7B,OAAID,EAAM,KAAOF,GACbC,EAASE,EACF,IAEJ,EACX,CAAC,EACMF,CACX,CACA,OAAsB,UAAY,CAC9B,SAASG,GAAU,CACf,KAAK,YAAc,CAAC,CACxB,CACA,cAAO,eAAeA,EAAQ,UAAW,OAAQ,CAI7C,IAAK,UAAY,CACb,OAAO,KAAK,YAAY,MAC5B,EACA,WAAY,GACZ,aAAc,EAClB,CAAC,EAKDA,EAAQ,UAAU,IAAM,SAAUJ,EAAK,CACnC,IAAIG,EAAQL,EAAS,KAAK,YAAaE,CAAG,EACtCE,EAAQ,KAAK,YAAYC,GAC7B,OAAOD,GAASA,EAAM,EAC1B,EAMAE,EAAQ,UAAU,IAAM,SAAUJ,EAAKK,EAAO,CAC1C,IAAIF,EAAQL,EAAS,KAAK,YAAaE,CAAG,EACtC,CAACG,EACD,KAAK,YAAYA,GAAO,GAAKE,EAG7B,KAAK,YAAY,KAAK,CAACL,EAAKK,CAAK,CAAC,CAE1C,EAKAD,EAAQ,UAAU,OAAS,SAAUJ,EAAK,CACtC,IAAIM,EAAU,KAAK,YACfH,EAAQL,EAASQ,EAASN,CAAG,EAC7B,CAACG,GACDG,EAAQ,OAAOH,EAAO,CAAC,CAE/B,EAKAC,EAAQ,UAAU,IAAM,SAAUJ,EAAK,CACnC,MAAO,CAAC,CAAC,CAACF,EAAS,KAAK,YAAaE,CAAG,CAC5C,EAIAI,EAAQ,UAAU,MAAQ,UAAY,CAClC,KAAK,YAAY,OAAO,CAAC,CAC7B,EAMAA,EAAQ,UAAU,QAAU,SAAUG,EAAUC,EAAK,CAC7CA,IAAQ,SAAUA,EAAM,MAC5B,QAASC,EAAK,EAAGC,EAAK,KAAK,YAAaD,EAAKC,EAAG,OAAQD,IAAM,CAC1D,IAAIP,EAAQQ,EAAGD,GACfF,EAAS,KAAKC,EAAKN,EAAM,GAAIA,EAAM,EAAE,CACzC,CACJ,EACOE,CACX,EAAE,CACN,EAAG,EAKCO,GAAY,OAAO,QAAW,aAAe,OAAO,UAAa,aAAe,OAAO,WAAa,SAGpGC,GAAY,UAAY,CACxB,OAAI,OAAO,QAAW,aAAe,OAAO,OAAS,KAC1C,OAEP,OAAO,MAAS,aAAe,KAAK,OAAS,KACtC,KAEP,OAAO,QAAW,aAAe,OAAO,OAAS,KAC1C,OAGJ,SAAS,aAAa,EAAE,CACnC,EAAG,EAQCC,GAA2B,UAAY,CACvC,OAAI,OAAO,uBAA0B,WAI1B,sBAAsB,KAAKD,EAAQ,EAEvC,SAAUL,EAAU,CAAE,OAAO,WAAW,UAAY,CAAE,OAAOA,EAAS,KAAK,IAAI,CAAC,CAAG,EAAG,IAAO,EAAE,CAAG,CAC7G,EAAG,EAGCO,GAAkB,EAStB,SAASC,GAAUR,EAAUS,EAAO,CAChC,IAAIC,EAAc,GAAOC,EAAe,GAAOC,EAAe,EAO9D,SAASC,GAAiB,CAClBH,IACAA,EAAc,GACdV,EAAS,GAETW,GACAG,EAAM,CAEd,CAQA,SAASC,GAAkB,CACvBT,GAAwBO,CAAc,CAC1C,CAMA,SAASC,GAAQ,CACb,IAAIE,EAAY,KAAK,IAAI,EACzB,GAAIN,EAAa,CAEb,GAAIM,EAAYJ,EAAeL,GAC3B,OAMJI,EAAe,EACnB,MAEID,EAAc,GACdC,EAAe,GACf,WAAWI,EAAiBN,CAAK,EAErCG,EAAeI,CACnB,CACA,OAAOF,CACX,CAGA,IAAIG,GAAgB,GAGhBC,GAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,QAAQ,EAEvFC,GAA4B,OAAO,kBAAqB,YAIxDC,GAA0C,UAAY,CAMtD,SAASA,GAA2B,CAMhC,KAAK,WAAa,GAMlB,KAAK,qBAAuB,GAM5B,KAAK,mBAAqB,KAM1B,KAAK,WAAa,CAAC,EACnB,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,QAAUZ,GAAS,KAAK,QAAQ,KAAK,IAAI,EAAGS,EAAa,CAClE,CAOA,OAAAG,EAAyB,UAAU,YAAc,SAAUC,EAAU,CAC5D,CAAC,KAAK,WAAW,QAAQA,CAAQ,GAClC,KAAK,WAAW,KAAKA,CAAQ,EAG5B,KAAK,YACN,KAAK,SAAS,CAEtB,EAOAD,EAAyB,UAAU,eAAiB,SAAUC,EAAU,CACpE,IAAIC,EAAY,KAAK,WACjB1B,EAAQ0B,EAAU,QAAQD,CAAQ,EAElC,CAACzB,GACD0B,EAAU,OAAO1B,EAAO,CAAC,EAGzB,CAAC0B,EAAU,QAAU,KAAK,YAC1B,KAAK,YAAY,CAEzB,EAOAF,EAAyB,UAAU,QAAU,UAAY,CACrD,IAAIG,EAAkB,KAAK,iBAAiB,EAGxCA,GACA,KAAK,QAAQ,CAErB,EASAH,EAAyB,UAAU,iBAAmB,UAAY,CAE9D,IAAII,EAAkB,KAAK,WAAW,OAAO,SAAUH,EAAU,CAC7D,OAAOA,EAAS,aAAa,EAAGA,EAAS,UAAU,CACvD,CAAC,EAMD,OAAAG,EAAgB,QAAQ,SAAUH,EAAU,CAAE,OAAOA,EAAS,gBAAgB,CAAG,CAAC,EAC3EG,EAAgB,OAAS,CACpC,EAOAJ,EAAyB,UAAU,SAAW,UAAY,CAGlD,CAAChB,IAAa,KAAK,aAMvB,SAAS,iBAAiB,gBAAiB,KAAK,gBAAgB,EAChE,OAAO,iBAAiB,SAAU,KAAK,OAAO,EAC1Ce,IACA,KAAK,mBAAqB,IAAI,iBAAiB,KAAK,OAAO,EAC3D,KAAK,mBAAmB,QAAQ,SAAU,CACtC,WAAY,GACZ,UAAW,GACX,cAAe,GACf,QAAS,EACb,CAAC,IAGD,SAAS,iBAAiB,qBAAsB,KAAK,OAAO,EAC5D,KAAK,qBAAuB,IAEhC,KAAK,WAAa,GACtB,EAOAC,EAAyB,UAAU,YAAc,UAAY,CAGrD,CAAChB,IAAa,CAAC,KAAK,aAGxB,SAAS,oBAAoB,gBAAiB,KAAK,gBAAgB,EACnE,OAAO,oBAAoB,SAAU,KAAK,OAAO,EAC7C,KAAK,oBACL,KAAK,mBAAmB,WAAW,EAEnC,KAAK,sBACL,SAAS,oBAAoB,qBAAsB,KAAK,OAAO,EAEnE,KAAK,mBAAqB,KAC1B,KAAK,qBAAuB,GAC5B,KAAK,WAAa,GACtB,EAQAgB,EAAyB,UAAU,iBAAmB,SAAUjB,EAAI,CAChE,IAAIsB,EAAKtB,EAAG,aAAcuB,EAAeD,IAAO,OAAS,GAAKA,EAE1DE,EAAmBT,GAAe,KAAK,SAAUzB,EAAK,CACtD,MAAO,CAAC,CAAC,CAACiC,EAAa,QAAQjC,CAAG,CACtC,CAAC,EACGkC,GACA,KAAK,QAAQ,CAErB,EAMAP,EAAyB,YAAc,UAAY,CAC/C,OAAK,KAAK,YACN,KAAK,UAAY,IAAIA,GAElB,KAAK,SAChB,EAMAA,EAAyB,UAAY,KAC9BA,CACX,EAAE,EASEQ,GAAsB,SAAUC,EAAQC,EAAO,CAC/C,QAAS5B,EAAK,EAAGC,EAAK,OAAO,KAAK2B,CAAK,EAAG5B,EAAKC,EAAG,OAAQD,IAAM,CAC5D,IAAIT,EAAMU,EAAGD,GACb,OAAO,eAAe2B,EAAQpC,EAAK,CAC/B,MAAOqC,EAAMrC,GACb,WAAY,GACZ,SAAU,GACV,aAAc,EAClB,CAAC,CACL,CACA,OAAOoC,CACX,EAQIE,GAAe,SAAUF,EAAQ,CAIjC,IAAIG,EAAcH,GAAUA,EAAO,eAAiBA,EAAO,cAAc,YAGzE,OAAOG,GAAe3B,EAC1B,EAGI4B,GAAYC,GAAe,EAAG,EAAG,EAAG,CAAC,EAOzC,SAASC,GAAQrC,EAAO,CACpB,OAAO,WAAWA,CAAK,GAAK,CAChC,CAQA,SAASsC,GAAeC,EAAQ,CAE5B,QADIC,EAAY,CAAC,EACRpC,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACpCoC,EAAUpC,EAAK,GAAK,UAAUA,GAElC,OAAOoC,EAAU,OAAO,SAAUC,EAAMC,EAAU,CAC9C,IAAI1C,EAAQuC,EAAO,UAAYG,EAAW,UAC1C,OAAOD,EAAOJ,GAAQrC,CAAK,CAC/B,EAAG,CAAC,CACR,CAOA,SAAS2C,GAAYJ,EAAQ,CAGzB,QAFIC,EAAY,CAAC,MAAO,QAAS,SAAU,MAAM,EAC7CI,EAAW,CAAC,EACPxC,EAAK,EAAGyC,EAAcL,EAAWpC,EAAKyC,EAAY,OAAQzC,IAAM,CACrE,IAAIsC,EAAWG,EAAYzC,GACvBJ,EAAQuC,EAAO,WAAaG,GAChCE,EAASF,GAAYL,GAAQrC,CAAK,CACtC,CACA,OAAO4C,CACX,CAQA,SAASE,GAAkBf,EAAQ,CAC/B,IAAIgB,EAAOhB,EAAO,QAAQ,EAC1B,OAAOK,GAAe,EAAG,EAAGW,EAAK,MAAOA,EAAK,MAAM,CACvD,CAOA,SAASC,GAA0BjB,EAAQ,CAGvC,IAAIkB,EAAclB,EAAO,YAAamB,EAAenB,EAAO,aAS5D,GAAI,CAACkB,GAAe,CAACC,EACjB,OAAOf,GAEX,IAAII,EAASN,GAAYF,CAAM,EAAE,iBAAiBA,CAAM,EACpDa,EAAWD,GAAYJ,CAAM,EAC7BY,EAAWP,EAAS,KAAOA,EAAS,MACpCQ,EAAUR,EAAS,IAAMA,EAAS,OAKlCS,EAAQhB,GAAQE,EAAO,KAAK,EAAGe,EAASjB,GAAQE,EAAO,MAAM,EAqBjE,GAlBIA,EAAO,YAAc,eAOjB,KAAK,MAAMc,EAAQF,CAAQ,IAAMF,IACjCI,GAASf,GAAeC,EAAQ,OAAQ,OAAO,EAAIY,GAEnD,KAAK,MAAMG,EAASF,CAAO,IAAMF,IACjCI,GAAUhB,GAAeC,EAAQ,MAAO,QAAQ,EAAIa,IAOxD,CAACG,GAAkBxB,CAAM,EAAG,CAK5B,IAAIyB,EAAgB,KAAK,MAAMH,EAAQF,CAAQ,EAAIF,EAC/CQ,EAAiB,KAAK,MAAMH,EAASF,CAAO,EAAIF,EAMhD,KAAK,IAAIM,CAAa,IAAM,IAC5BH,GAASG,GAET,KAAK,IAAIC,CAAc,IAAM,IAC7BH,GAAUG,EAElB,CACA,OAAOrB,GAAeQ,EAAS,KAAMA,EAAS,IAAKS,EAAOC,CAAM,CACpE,CAOA,IAAII,GAAwB,UAAY,CAGpC,OAAI,OAAO,oBAAuB,YACvB,SAAU3B,EAAQ,CAAE,OAAOA,aAAkBE,GAAYF,CAAM,EAAE,kBAAoB,EAKzF,SAAUA,EAAQ,CAAE,OAAQA,aAAkBE,GAAYF,CAAM,EAAE,YACrE,OAAOA,EAAO,SAAY,UAAa,CAC/C,EAAG,EAOH,SAASwB,GAAkBxB,EAAQ,CAC/B,OAAOA,IAAWE,GAAYF,CAAM,EAAE,SAAS,eACnD,CAOA,SAAS4B,GAAe5B,EAAQ,CAC5B,OAAKzB,GAGDoD,GAAqB3B,CAAM,EACpBe,GAAkBf,CAAM,EAE5BiB,GAA0BjB,CAAM,EAL5BI,EAMf,CAQA,SAASyB,GAAmBvD,EAAI,CAC5B,IAAIwD,EAAIxD,EAAG,EAAGyD,EAAIzD,EAAG,EAAGgD,EAAQhD,EAAG,MAAOiD,EAASjD,EAAG,OAElD0D,EAAS,OAAO,iBAAoB,YAAc,gBAAkB,OACpEC,EAAO,OAAO,OAAOD,EAAO,SAAS,EAEzC,OAAAjC,GAAmBkC,EAAM,CACrB,EAAGH,EAAG,EAAGC,EAAG,MAAOT,EAAO,OAAQC,EAClC,IAAKQ,EACL,MAAOD,EAAIR,EACX,OAAQC,EAASQ,EACjB,KAAMD,CACV,CAAC,EACMG,CACX,CAWA,SAAS5B,GAAeyB,EAAGC,EAAGT,EAAOC,EAAQ,CACzC,MAAO,CAAE,EAAGO,EAAG,EAAGC,EAAG,MAAOT,EAAO,OAAQC,CAAO,CACtD,CAMA,IAAIW,GAAmC,UAAY,CAM/C,SAASA,EAAkBlC,EAAQ,CAM/B,KAAK,eAAiB,EAMtB,KAAK,gBAAkB,EAMvB,KAAK,aAAeK,GAAe,EAAG,EAAG,EAAG,CAAC,EAC7C,KAAK,OAASL,CAClB,CAOA,OAAAkC,EAAkB,UAAU,SAAW,UAAY,CAC/C,IAAID,EAAOL,GAAe,KAAK,MAAM,EACrC,YAAK,aAAeK,EACZA,EAAK,QAAU,KAAK,gBACxBA,EAAK,SAAW,KAAK,eAC7B,EAOAC,EAAkB,UAAU,cAAgB,UAAY,CACpD,IAAID,EAAO,KAAK,aAChB,YAAK,eAAiBA,EAAK,MAC3B,KAAK,gBAAkBA,EAAK,OACrBA,CACX,EACOC,CACX,EAAE,EAEEC,GAAqC,UAAY,CAOjD,SAASA,EAAoBnC,EAAQoC,EAAU,CAC3C,IAAIC,EAAcR,GAAmBO,CAAQ,EAO7CrC,GAAmB,KAAM,CAAE,OAAQC,EAAQ,YAAaqC,CAAY,CAAC,CACzE,CACA,OAAOF,CACX,EAAE,EAEEG,GAAmC,UAAY,CAW/C,SAASA,EAAkBnE,EAAUoE,EAAYC,EAAa,CAc1D,GAPA,KAAK,oBAAsB,CAAC,EAM5B,KAAK,cAAgB,IAAI/E,GACrB,OAAOU,GAAa,WACpB,MAAM,IAAI,UAAU,yDAAyD,EAEjF,KAAK,UAAYA,EACjB,KAAK,YAAcoE,EACnB,KAAK,aAAeC,CACxB,CAOA,OAAAF,EAAkB,UAAU,QAAU,SAAUtC,EAAQ,CACpD,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAGlE,GAAI,SAAO,SAAY,aAAe,EAAE,mBAAmB,SAG3D,IAAI,EAAEA,aAAkBE,GAAYF,CAAM,EAAE,SACxC,MAAM,IAAI,UAAU,uCAAuC,EAE/D,IAAIyC,EAAe,KAAK,cAEpBA,EAAa,IAAIzC,CAAM,IAG3ByC,EAAa,IAAIzC,EAAQ,IAAIkC,GAAkBlC,CAAM,CAAC,EACtD,KAAK,YAAY,YAAY,IAAI,EAEjC,KAAK,YAAY,QAAQ,GAC7B,EAOAsC,EAAkB,UAAU,UAAY,SAAUtC,EAAQ,CACtD,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAGlE,GAAI,SAAO,SAAY,aAAe,EAAE,mBAAmB,SAG3D,IAAI,EAAEA,aAAkBE,GAAYF,CAAM,EAAE,SACxC,MAAM,IAAI,UAAU,uCAAuC,EAE/D,IAAIyC,EAAe,KAAK,cAEpB,CAACA,EAAa,IAAIzC,CAAM,IAG5ByC,EAAa,OAAOzC,CAAM,EACrByC,EAAa,MACd,KAAK,YAAY,eAAe,IAAI,GAE5C,EAMAH,EAAkB,UAAU,WAAa,UAAY,CACjD,KAAK,YAAY,EACjB,KAAK,cAAc,MAAM,EACzB,KAAK,YAAY,eAAe,IAAI,CACxC,EAOAA,EAAkB,UAAU,aAAe,UAAY,CACnD,IAAII,EAAQ,KACZ,KAAK,YAAY,EACjB,KAAK,cAAc,QAAQ,SAAUC,EAAa,CAC1CA,EAAY,SAAS,GACrBD,EAAM,oBAAoB,KAAKC,CAAW,CAElD,CAAC,CACL,EAOAL,EAAkB,UAAU,gBAAkB,UAAY,CAEtD,GAAI,EAAC,KAAK,UAAU,EAGpB,KAAIlE,EAAM,KAAK,aAEXF,EAAU,KAAK,oBAAoB,IAAI,SAAUyE,EAAa,CAC9D,OAAO,IAAIR,GAAoBQ,EAAY,OAAQA,EAAY,cAAc,CAAC,CAClF,CAAC,EACD,KAAK,UAAU,KAAKvE,EAAKF,EAASE,CAAG,EACrC,KAAK,YAAY,EACrB,EAMAkE,EAAkB,UAAU,YAAc,UAAY,CAClD,KAAK,oBAAoB,OAAO,CAAC,CACrC,EAMAA,EAAkB,UAAU,UAAY,UAAY,CAChD,OAAO,KAAK,oBAAoB,OAAS,CAC7C,EACOA,CACX,EAAE,EAKE7C,GAAY,OAAO,SAAY,YAAc,IAAI,QAAY,IAAIhC,GAKjEmF,GAAgC,UAAY,CAO5C,SAASA,EAAezE,EAAU,CAC9B,GAAI,EAAE,gBAAgByE,GAClB,MAAM,IAAI,UAAU,oCAAoC,EAE5D,GAAI,CAAC,UAAU,OACX,MAAM,IAAI,UAAU,0CAA0C,EAElE,IAAIL,EAAahD,GAAyB,YAAY,EAClDC,EAAW,IAAI8C,GAAkBnE,EAAUoE,EAAY,IAAI,EAC/D9C,GAAU,IAAI,KAAMD,CAAQ,CAChC,CACA,OAAOoD,CACX,EAAE,EAEF,CACI,UACA,YACA,YACJ,EAAE,QAAQ,SAAUC,EAAQ,CACxBD,GAAe,UAAUC,GAAU,UAAY,CAC3C,IAAIvE,EACJ,OAAQA,EAAKmB,GAAU,IAAI,IAAI,GAAGoD,GAAQ,MAAMvE,EAAI,SAAS,CACjE,CACJ,CAAC,EAED,IAAIP,GAAS,UAAY,CAErB,OAAI,OAAOS,GAAS,gBAAmB,YAC5BA,GAAS,eAEboE,EACX,EAAG,EAEIE,GAAQ/E,GCr2Bf,IAAMgF,GAAS,IAAIC,EAYbC,GAAYC,EAAM,IAAMC,EAC5B,IAAIC,GAAeC,GAAW,CAC5B,QAAWC,KAASD,EAClBN,GAAO,KAAKO,CAAK,CACrB,CAAC,CACH,CAAC,EACE,KACCC,EAAUC,GAAYC,EAAMC,GAAOP,EAAGK,CAAQ,CAAC,EAC5C,KACCG,EAAS,IAAMH,EAAS,WAAW,CAAC,CACtC,CACF,EACAI,EAAY,CAAC,CACf,EAaK,SAASC,GACdC,EACa,CACb,MAAO,CACL,MAAQA,EAAG,YACX,OAAQA,EAAG,YACb,CACF,CAuBO,SAASC,GACdD,EACyB,CACzB,OAAOb,GACJ,KACCe,EAAIR,GAAYA,EAAS,QAAQM,CAAE,CAAC,EACpCP,EAAUC,GAAYT,GACnB,KACCkB,EAAO,CAAC,CAAE,OAAAC,CAAO,IAAMA,IAAWJ,CAAE,EACpCH,EAAS,IAAMH,EAAS,UAAUM,CAAE,CAAC,EACrCK,EAAI,IAAMN,GAAeC,CAAE,CAAC,CAC9B,CACF,EACAM,EAAUP,GAAeC,CAAE,CAAC,CAC9B,CACJ,CC1GO,SAASO,GACdC,EACa,CACb,MAAO,CACL,MAAQA,EAAG,YACX,OAAQA,EAAG,YACb,CACF,CASO,SAASC,GACdD,EACyB,CACzB,IAAIE,EAASF,EAAG,cAChB,KAAOE,IAEHF,EAAG,aAAeE,EAAO,aACzBF,EAAG,cAAgBE,EAAO,eAE1BA,GAAUF,EAAKE,GAAQ,cAK3B,OAAOA,EAASF,EAAK,MACvB,CCfA,IAAMG,GAAS,IAAIC,EAUbC,GAAYC,EAAM,IAAMC,EAC5B,IAAI,qBAAqBC,GAAW,CAClC,QAAWC,KAASD,EAClBL,GAAO,KAAKM,CAAK,CACrB,EAAG,CACD,UAAW,CACb,CAAC,CACH,CAAC,EACE,KACCC,EAAUC,GAAYC,EAAMC,GAAON,EAAGI,CAAQ,CAAC,EAC5C,KACCG,EAAS,IAAMH,EAAS,WAAW,CAAC,CACtC,CACF,EACAI,EAAY,CAAC,CACf,EAaK,SAASC,GACdC,EACqB,CACrB,OAAOZ,GACJ,KACCa,EAAIP,GAAYA,EAAS,QAAQM,CAAE,CAAC,EACpCP,EAAUC,GAAYR,GACnB,KACCgB,EAAO,CAAC,CAAE,OAAAC,CAAO,IAAMA,IAAWH,CAAE,EACpCH,EAAS,IAAMH,EAAS,UAAUM,CAAE,CAAC,EACrCI,EAAI,CAAC,CAAE,eAAAC,CAAe,IAAMA,CAAc,CAC5C,CACF,CACF,CACJ,CAaO,SAASC,GACdN,EAAiBO,EAAY,GACR,CACrB,OAAOC,GAA0BR,CAAE,EAChC,KACCI,EAAI,CAAC,CAAE,EAAAK,CAAE,IAAM,CACb,IAAMC,EAAUC,GAAeX,CAAE,EAC3BY,EAAUC,GAAsBb,CAAE,EACxC,OAAOS,GACLG,EAAQ,OAASF,EAAQ,OAASH,CAEtC,CAAC,EACDO,EAAqB,CACvB,CACJ,CCjFA,IAAMC,GAA4C,CAChD,OAAQC,EAAW,yBAAyB,EAC5C,OAAQA,EAAW,yBAAyB,CAC9C,EAaO,SAASC,GAAUC,EAAuB,CAC/C,OAAOH,GAAQG,GAAM,OACvB,CAaO,SAASC,GAAUD,EAAcE,EAAsB,CACxDL,GAAQG,GAAM,UAAYE,GAC5BL,GAAQG,GAAM,MAAM,CACxB,CAWO,SAASG,GAAYH,EAAmC,CAC7D,IAAMI,EAAKP,GAAQG,GACnB,OAAOK,EAAUD,EAAI,QAAQ,EAC1B,KACCE,EAAI,IAAMF,EAAG,OAAO,EACpBG,EAAUH,EAAG,OAAO,CACtB,CACJ,CClCA,SAASI,GACPC,EAAiBC,EACR,CACT,OAAQD,EAAG,YAAa,CAGtB,KAAK,iBAEH,OAAIA,EAAG,OAAS,QACP,SAAS,KAAKC,CAAI,EAElB,GAGX,KAAK,kBACL,KAAK,oBACH,MAAO,GAGT,QACE,OAAOD,EAAG,iBACd,CACF,CAWO,SAASE,IAAsC,CACpD,OAAOC,EAAyB,OAAQ,SAAS,EAC9C,KACCC,EAAOC,GAAM,EAAEA,EAAG,SAAWA,EAAG,QAAQ,EACxCC,EAAID,IAAO,CACT,KAAME,GAAU,QAAQ,EAAI,SAAW,SACvC,KAAMF,EAAG,IACT,OAAQ,CACNA,EAAG,eAAe,EAClBA,EAAG,gBAAgB,CACrB,CACF,EAAc,EACdD,EAAO,CAAC,CAAE,KAAAI,EAAM,KAAAP,CAAK,IAAM,CACzB,GAAIO,IAAS,SAAU,CACrB,IAAMC,EAASC,GAAiB,EAChC,GAAI,OAAOD,GAAW,YACpB,MAAO,CAACV,GAAwBU,EAAQR,CAAI,CAChD,CACA,MAAO,EACT,CAAC,EACDU,GAAM,CACR,CACJ,CCpFO,SAASC,IAAmB,CACjC,OAAO,IAAI,IAAI,SAAS,IAAI,CAC9B,CAOO,SAASC,GAAYC,EAAgB,CAC1C,SAAS,KAAOA,EAAI,IACtB,CASO,SAASC,IAA8B,CAC5C,OAAO,IAAIC,CACb,CCLA,SAASC,GAAYC,EAAiBC,EAA8B,CAGlE,GAAI,OAAOA,GAAU,UAAY,OAAOA,GAAU,SAChDD,EAAG,WAAaC,EAAM,SAAS,UAGtBA,aAAiB,KAC1BD,EAAG,YAAYC,CAAK,UAGX,MAAM,QAAQA,CAAK,EAC5B,QAAWC,KAAQD,EACjBF,GAAYC,EAAIE,CAAI,CAE1B,CAyBO,SAASC,EACdC,EAAaC,KAAmCC,EAC7C,CACH,IAAMN,EAAK,SAAS,cAAcI,CAAG,EAGrC,GAAIC,EACF,QAAWE,KAAQ,OAAO,KAAKF,CAAU,EACnC,OAAOA,EAAWE,IAAU,cAI5B,OAAOF,EAAWE,IAAU,UAC9BP,EAAG,aAAaO,EAAMF,EAAWE,EAAK,EAEtCP,EAAG,aAAaO,EAAM,EAAE,GAI9B,QAAWN,KAASK,EAClBP,GAAYC,EAAIC,CAAK,EAGvB,OAAOD,CACT,CChFO,SAASQ,GAASC,EAAeC,EAAmB,CACzD,IAAIC,EAAID,EACR,GAAID,EAAM,OAASE,EAAG,CACpB,KAAOF,EAAME,KAAO,KAAO,EAAEA,EAAI,GAAG,CACpC,MAAO,GAAGF,EAAM,UAAU,EAAGE,CAAC,MAChC,CACA,OAAOF,CACT,CAkBO,SAASG,GAAMH,EAAuB,CAC3C,GAAIA,EAAQ,IAAK,CACf,IAAMI,EAAS,GAAGJ,EAAQ,KAAO,IAAO,IACxC,MAAO,KAAKA,EAAQ,MAAY,KAAM,QAAQI,CAAM,IACtD,KACE,QAAOJ,EAAM,SAAS,CAE1B,CC5BO,SAASK,IAA0B,CACxC,OAAO,SAAS,KAAK,UAAU,CAAC,CAClC,CAYO,SAASC,GAAgBC,EAAoB,CAClD,IAAMC,EAAKC,EAAE,IAAK,CAAE,KAAMF,CAAK,CAAC,EAChCC,EAAG,iBAAiB,QAASE,GAAMA,EAAG,gBAAgB,CAAC,EACvDF,EAAG,MAAM,CACX,CASO,SAASG,IAAwC,CACtD,OAAOC,EAA2B,OAAQ,YAAY,EACnD,KACCC,EAAIR,EAAe,EACnBS,EAAUT,GAAgB,CAAC,EAC3BU,EAAOR,GAAQA,EAAK,OAAS,CAAC,EAC9BS,EAAY,CAAC,CACf,CACJ,CAOO,SAASC,IAA+C,CAC7D,OAAON,GAAkB,EACtB,KACCE,EAAIK,GAAMC,GAAmB,QAAQD,KAAM,CAAE,EAC7CH,EAAOP,GAAM,OAAOA,GAAO,WAAW,CACxC,CACJ,CC1CO,SAASY,GAAWC,EAAoC,CAC7D,IAAMC,EAAQ,WAAWD,CAAK,EAC9B,OAAOE,GAA0BC,GAC/BF,EAAM,YAAY,IAAME,EAAKF,EAAM,OAAO,CAAC,CAC5C,EACE,KACCG,EAAUH,EAAM,OAAO,CACzB,CACJ,CAOO,SAASI,IAAkC,CAChD,IAAMJ,EAAQ,WAAW,OAAO,EAChC,OAAOK,EACLC,EAAU,OAAQ,aAAa,EAAE,KAAKC,EAAI,IAAM,EAAI,CAAC,EACrDD,EAAU,OAAQ,YAAY,EAAE,KAAKC,EAAI,IAAM,EAAK,CAAC,CACvD,EACG,KACCJ,EAAUH,EAAM,OAAO,CACzB,CACJ,CAcO,SAASQ,GACdC,EAA6BC,EACd,CACf,OAAOD,EACJ,KACCE,EAAUC,GAAUA,EAASF,EAAQ,EAAIG,CAAK,CAChD,CACJ,CC7CO,SAASC,GACdC,EAAmBC,EAAuB,CAAE,YAAa,aAAc,EACjD,CACtB,OAAOC,GAAK,MAAM,GAAGF,IAAOC,CAAO,CAAC,EACjC,KACCE,GAAW,IAAMC,CAAK,EACtBC,EAAUC,GAAOA,EAAI,SAAW,IAC5BC,GAAW,IAAM,IAAI,MAAMD,EAAI,UAAU,CAAC,EAC1CE,EAAGF,CAAG,CACV,CACF,CACJ,CAYO,SAASG,GACdT,EAAmBC,EACJ,CACf,OAAOF,GAAQC,EAAKC,CAAO,EACxB,KACCI,EAAUC,GAAOA,EAAI,KAAK,CAAC,EAC3BI,EAAY,CAAC,CACf,CACJ,CAUO,SAASC,GACdX,EAAmBC,EACG,CACtB,IAAMW,EAAM,IAAI,UAChB,OAAOb,GAAQC,EAAKC,CAAO,EACxB,KACCI,EAAUC,GAAOA,EAAI,KAAK,CAAC,EAC3BO,EAAIP,GAAOM,EAAI,gBAAgBN,EAAK,UAAU,CAAC,EAC/CI,EAAY,CAAC,CACf,CACJ,CClDO,SAASI,GAAYC,EAA+B,CACzD,IAAMC,EAASC,EAAE,SAAU,CAAE,IAAAF,CAAI,CAAC,EAClC,OAAOG,EAAM,KACX,SAAS,KAAK,YAAYF,CAAM,EACzBG,EACLC,EAAUJ,EAAQ,MAAM,EACxBI,EAAUJ,EAAQ,OAAO,EACtB,KACCK,EAAU,IACRC,GAAW,IAAM,IAAI,eAAe,mBAAmBP,GAAK,CAAC,CAC9D,CACH,CACJ,EACG,KACCQ,EAAI,IAAG,EAAY,EACnBC,EAAS,IAAM,SAAS,KAAK,YAAYR,CAAM,CAAC,EAChDS,GAAK,CAAC,CACR,EACH,CACH,CCfO,SAASC,IAAoC,CAClD,MAAO,CACL,EAAG,KAAK,IAAI,EAAG,OAAO,EACtB,EAAG,KAAK,IAAI,EAAG,OAAO,CACxB,CACF,CASO,SAASC,IAAkD,CAChE,OAAOC,EACLC,EAAU,OAAQ,SAAU,CAAE,QAAS,EAAK,CAAC,EAC7CA,EAAU,OAAQ,SAAU,CAAE,QAAS,EAAK,CAAC,CAC/C,EACG,KACCC,EAAIJ,EAAiB,EACrBK,EAAUL,GAAkB,CAAC,CAC/B,CACJ,CC3BO,SAASM,IAAgC,CAC9C,MAAO,CACL,MAAQ,WACR,OAAQ,WACV,CACF,CASO,SAASC,IAA8C,CAC5D,OAAOC,EAAU,OAAQ,SAAU,CAAE,QAAS,EAAK,CAAC,EACjD,KACCC,EAAIH,EAAe,EACnBI,EAAUJ,GAAgB,CAAC,CAC7B,CACJ,CCXO,SAASK,IAAsC,CACpD,OAAOC,EAAc,CACnBC,GAAoB,EACpBC,GAAkB,CACpB,CAAC,EACE,KACCC,EAAI,CAAC,CAACC,EAAQC,CAAI,KAAO,CAAE,OAAAD,EAAQ,KAAAC,CAAK,EAAE,EAC1CC,EAAY,CAAC,CACf,CACJ,CCVO,SAASC,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EAChB,CACtB,IAAMC,EAAQF,EACX,KACCG,EAAwB,MAAM,CAChC,EAGIC,EAAUC,EAAc,CAACH,EAAOD,CAAO,CAAC,EAC3C,KACCK,EAAI,IAAMC,GAAiBR,CAAE,CAAC,CAChC,EAGF,OAAOM,EAAc,CAACJ,EAASD,EAAWI,CAAO,CAAC,EAC/C,KACCE,EAAI,CAAC,CAAC,CAAE,OAAAE,CAAO,EAAG,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAG,CAAE,EAAAC,EAAG,EAAAC,CAAE,CAAC,KAAO,CACjD,OAAQ,CACN,EAAGH,EAAO,EAAIE,EACd,EAAGF,EAAO,EAAIG,EAAIJ,CACpB,EACA,KAAAE,CACF,EAAE,CACJ,CACJ,CCIO,SAASG,GACdC,EAAgB,CAAE,IAAAC,CAAI,EACP,CAGf,IAAMC,EAAMC,EAAwBH,EAAQ,SAAS,EAClD,KACCI,EAAI,CAAC,CAAE,KAAAC,CAAK,IAAMA,CAAS,CAC7B,EAGF,OAAOJ,EACJ,KACCK,GAAS,IAAMJ,EAAK,CAAE,QAAS,GAAM,SAAU,EAAK,CAAC,EACrDK,EAAIC,GAAWR,EAAO,YAAYQ,CAAO,CAAC,EAC1CC,EAAU,IAAMP,CAAG,EACnBQ,GAAM,CACR,CACJ,CCCA,IAAMC,GAASC,EAAW,WAAW,EAC/BC,GAAiB,KAAK,MAAMF,GAAO,WAAY,EACrDE,GAAO,KAAO,GAAG,IAAI,IAAIA,GAAO,KAAMC,GAAY,CAAC,IAW5C,SAASC,IAAwB,CACtC,OAAOF,EACT,CASO,SAASG,EAAQC,EAAqB,CAC3C,OAAOJ,GAAO,SAAS,SAASI,CAAI,CACtC,CAUO,SAASC,GACdC,EAAkBC,EACV,CACR,OAAO,OAAOA,GAAU,YACpBP,GAAO,aAAaM,GAAK,QAAQ,IAAKC,EAAM,SAAS,CAAC,EACtDP,GAAO,aAAaM,EAC1B,CCjCO,SAASE,GACdC,EAASC,EAAmB,SACP,CACrB,OAAOC,EAAW,sBAAsBF,KAASC,CAAI,CACvD,CAYO,SAASE,GACdH,EAASC,EAAmB,SACL,CACvB,OAAOG,EAAY,sBAAsBJ,KAASC,CAAI,CACxD,CC1EO,SAASI,GACdC,EACsB,CACtB,IAAMC,EAASC,EAAW,6BAA8BF,CAAE,EAC1D,OAAOG,EAAUF,EAAQ,QAAS,CAAE,KAAM,EAAK,CAAC,EAC7C,KACCG,EAAI,IAAMF,EAAW,cAAeF,CAAE,CAAC,EACvCI,EAAIC,IAAY,CAAE,KAAM,UAAUA,EAAQ,SAAS,CAAE,EAAE,CACzD,CACJ,CASO,SAASC,GACdN,EACiC,CACjC,MAAI,CAACO,EAAQ,kBAAkB,GAAK,CAACP,EAAG,kBAC/BQ,EAGFC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EACG,KACCE,EAAU,CAAE,KAAM,SAAiB,YAAY,CAAE,CAAC,CACpD,EACG,UAAU,CAAC,CAAE,KAAAC,CAAK,IAAM,CA5FjC,IAAAC,EA6FcD,GAAQA,MAAUC,EAAA,SAAiB,YAAY,IAA7B,KAAAA,EAAkCD,KACtDb,EAAG,OAAS,GAGZ,SAAiB,aAAca,CAAI,EAEvC,CAAC,EAGEd,GAAcC,CAAE,EACpB,KACCe,EAAIC,GAASN,EAAM,KAAKM,CAAK,CAAC,EAC9BC,EAAS,IAAMP,EAAM,SAAS,CAAC,EAC/BN,EAAIY,GAAUE,EAAA,CAAE,IAAKlB,GAAOgB,EAAQ,CACtC,CACJ,CAAC,CACH,CC5BO,SAASG,GACdC,EAAiB,CAAE,QAAAC,CAAQ,EACN,CACrB,OAAOA,EACJ,KACCC,EAAIC,IAAW,CAAE,OAAQA,IAAWH,CAAG,EAAE,CAC3C,CACJ,CAYO,SAASI,GACdJ,EAAiBK,EACe,CAChC,IAAMC,EAAY,IAAIC,EACtB,OAAAD,EAAU,UAAU,CAAC,CAAE,OAAAE,CAAO,IAAM,CAClCR,EAAG,OAASQ,CACd,CAAC,EAGMT,GAAaC,EAAIK,CAAO,EAC5B,KACCI,EAAIC,GAASJ,EAAU,KAAKI,CAAK,CAAC,EAClCC,EAAS,IAAML,EAAU,SAAS,CAAC,EACnCJ,EAAIQ,GAAUE,EAAA,CAAE,IAAKZ,GAAOU,EAAQ,CACtC,CACJ,CC7FA,IAAAG,GAAwB,SCajB,SAASC,GAAcC,EAA0B,CACtD,OACEC,EAAC,OAAI,MAAM,aAAa,GAAID,GAC1BC,EAAC,OAAI,MAAM,+BAA+B,CAC5C,CAEJ,CCHO,SAASC,GACdC,EAAqBC,EACR,CAIb,GAHAA,EAASA,EAAS,GAAGA,gBAAqBD,IAAO,OAG7CC,EAAQ,CACV,IAAMC,EAASD,EAAS,IAAIA,IAAW,OACvC,OACEE,EAAC,SAAM,MAAM,gBAAgB,SAAU,GACpCC,GAAcH,CAAM,EACrBE,EAAC,KAAE,KAAMD,EAAQ,MAAM,uBAAuB,SAAU,IACtDC,EAAC,QAAK,wBAAuBH,EAAI,CACnC,CACF,CAEJ,KACE,QACEG,EAAC,SAAM,MAAM,gBAAgB,SAAU,GACpCC,GAAcH,CAAM,EACrBE,EAAC,QAAK,MAAM,uBAAuB,SAAU,IAC3CA,EAAC,QAAK,wBAAuBH,EAAI,CACnC,CACF,CAGN,CC5BO,SAASK,GAAsBC,EAAyB,CAC7D,OACEC,EAAC,UACC,MAAM,uBACN,MAAOC,GAAY,gBAAgB,EACnC,wBAAuB,IAAIF,WAC5B,CAEL,CCYA,SAASG,GACPC,EAA2CC,EAC9B,CACb,IAAMC,EAASD,EAAO,EAChBE,EAASF,EAAO,EAGhBG,EAAU,OAAO,KAAKJ,EAAS,KAAK,EACvC,OAAOK,GAAO,CAACL,EAAS,MAAMK,EAAI,EAClC,OAAyB,CAACC,EAAMD,IAAQ,CACvC,GAAGC,EAAMC,EAAC,WAAKF,CAAI,EAAQ,GAC7B,EAAG,CAAC,CAAC,EACJ,MAAM,EAAG,EAAE,EAGRG,EAAM,IAAI,IAAIR,EAAS,QAAQ,EACjCS,EAAQ,kBAAkB,GAC5BD,EAAI,aAAa,IAAI,IAAK,OAAO,QAAQR,EAAS,KAAK,EACpD,OAAO,CAAC,CAAC,CAAEU,CAAK,IAAMA,CAAK,EAC3B,OAAO,CAACC,EAAW,CAACC,CAAK,IAAM,GAAGD,KAAaC,IAAQ,KAAK,EAAG,EAAE,CACpE,EAGF,GAAM,CAAE,KAAAC,CAAK,EAAIC,GAAc,EAC/B,OACEP,EAAC,KAAE,KAAM,GAAGC,IAAO,MAAM,yBAAyB,SAAU,IAC1DD,EAAC,WACC,MAAO,CAAC,4BAA6B,GAAGL,EACpC,CAAC,qCAAqC,EACtC,CAAC,CACL,EAAE,KAAK,GAAG,EACV,gBAAeF,EAAS,MAAM,QAAQ,CAAC,GAEtCE,EAAS,GAAKK,EAAC,OAAI,MAAM,iCAAiC,EAC3DA,EAAC,MAAG,MAAM,2BAA2BP,EAAS,KAAM,EACnDG,EAAS,GAAKH,EAAS,KAAK,OAAS,GACpCO,EAAC,KAAE,MAAM,4BACNQ,GAASf,EAAS,KAAM,GAAG,CAC9B,EAEDA,EAAS,MACRO,EAAC,OAAI,MAAM,cACRP,EAAS,KAAK,IAAIgB,GAAO,CACxB,IAAMC,EAAKD,EAAI,QAAQ,WAAY,EAAE,EAC/BE,EAAOL,EACTI,KAAMJ,EACJ,4BAA4BA,EAAKI,KACjC,cACF,GACJ,OACEV,EAAC,QAAK,MAAO,UAAUW,KAASF,CAAI,CAExC,CAAC,CACH,EAEDb,EAAS,GAAKC,EAAQ,OAAS,GAC9BG,EAAC,KAAE,MAAM,2BACNY,GAAY,4BAA4B,EAAE,KAAG,GAAGf,CACnD,CAEJ,CACF,CAEJ,CAaO,SAASgB,GACdC,EACa,CACb,IAAMC,EAAYD,EAAO,GAAG,MACtBE,EAAO,CAAC,GAAGF,CAAM,EAGjBnB,EAASqB,EAAK,UAAUC,GAAO,CAACA,EAAI,SAAS,SAAS,GAAG,CAAC,EAC1D,CAACC,CAAO,EAAIF,EAAK,OAAOrB,EAAQ,CAAC,EAGnCwB,EAAQH,EAAK,UAAUC,GAAOA,EAAI,MAAQF,CAAS,EACnDI,IAAU,KACZA,EAAQH,EAAK,QAGf,IAAMI,EAAOJ,EAAK,MAAM,EAAGG,CAAK,EAC1BE,EAAOL,EAAK,MAAMG,CAAK,EAGvBG,EAAW,CACf9B,GAAqB0B,EAAS,EAAc,EAAE,CAACvB,GAAUwB,IAAU,EAAE,EACrE,GAAGC,EAAK,IAAIG,GAAW/B,GAAqB+B,EAAS,CAAW,CAAC,EACjE,GAAGF,EAAK,OAAS,CACfrB,EAAC,WAAQ,MAAM,0BACbA,EAAC,WAAQ,SAAU,IAChBqB,EAAK,OAAS,GAAKA,EAAK,SAAW,EAChCT,GAAY,wBAAwB,EACpCA,GAAY,2BAA4BS,EAAK,MAAM,CAEzD,EACC,GAAGA,EAAK,IAAIE,GAAW/B,GAAqB+B,EAAS,CAAW,CAAC,CACpE,CACF,EAAI,CAAC,CACP,EAGA,OACEvB,EAAC,MAAG,MAAM,0BACPsB,CACH,CAEJ,CC1IO,SAASE,GAAkBC,EAAiC,CACjE,OACEC,EAAC,MAAG,MAAM,oBACP,OAAO,QAAQD,CAAK,EAAE,IAAI,CAAC,CAACE,EAAKC,CAAK,IACrCF,EAAC,MAAG,MAAO,oCAAoCC,KAC5C,OAAOC,GAAU,SAAWC,GAAMD,CAAK,EAAIA,CAC9C,CACD,CACH,CAEJ,CCAO,SAASE,GACdC,EACa,CACb,IAAMC,EAAU,kCAAkCD,IAClD,OACEE,EAAC,OAAI,MAAOD,EAAS,OAAM,IACzBC,EAAC,UAAO,MAAM,gBAAgB,SAAU,GAAI,CAC9C,CAEJ,CCpBO,SAASC,GAAYC,EAAiC,CAC3D,OACEC,EAAC,OAAI,MAAM,0BACTA,EAAC,OAAI,MAAM,qBACRD,CACH,CACF,CAEJ,CCMA,SAASE,GAAcC,EAA+B,CACpD,IAAMC,EAASC,GAAc,EAGvBC,EAAM,IAAI,IAAI,MAAMH,EAAQ,WAAYC,EAAO,IAAI,EACzD,OACEG,EAAC,MAAG,MAAM,oBACRA,EAAC,KAAE,KAAM,GAAGD,IAAO,MAAM,oBACtBH,EAAQ,KACX,CACF,CAEJ,CAcO,SAASK,GACdC,EAAqBC,EACR,CACb,OACEH,EAAC,OAAI,MAAM,cACTA,EAAC,UACC,MAAM,sBACN,aAAYI,GAAY,sBAAsB,GAE7CD,EAAO,KACV,EACAH,EAAC,MAAG,MAAM,oBACPE,EAAS,IAAIP,EAAa,CAC7B,CACF,CAEJ,CCCO,SAASU,GACdC,EAAiBC,EACO,CACxB,IAAMC,EAAUC,EAAM,IAAMC,EAAc,CACxCC,GAAmBL,CAAE,EACrBM,GAA0BL,CAAS,CACrC,CAAC,CAAC,EACC,KACCM,EAAI,CAAC,CAAC,CAAE,EAAAC,EAAG,EAAAC,CAAE,EAAGC,CAAM,IAAqB,CACzC,GAAM,CAAE,MAAAC,EAAO,OAAAC,CAAO,EAAIC,GAAeb,CAAE,EAC3C,MAAQ,CACN,EAAGQ,EAAIE,EAAO,EAAIC,EAAQ,EAC1B,EAAGF,EAAIC,EAAO,EAAIE,EAAS,CAC7B,CACF,CAAC,CACH,EAGF,OAAOE,GAAkBd,CAAE,EACxB,KACCe,EAAUC,GAAUd,EACjB,KACCK,EAAIU,IAAW,CAAE,OAAAD,EAAQ,OAAAC,CAAO,EAAE,EAClCC,GAAK,CAAC,CAACF,GAAU,GAAQ,CAC3B,CACF,CACF,CACJ,CAWO,SAASG,GACdnB,EAAiBC,EAAwB,CAAE,QAAAmB,CAAQ,EAChB,CACnC,GAAM,CAACC,EAASC,CAAK,EAAI,MAAM,KAAKtB,EAAG,QAAQ,EAG/C,OAAOG,EAAM,IAAM,CACjB,IAAMoB,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EACpC,OAAAH,EAAM,UAAU,CAGd,KAAK,CAAE,OAAAN,CAAO,EAAG,CACfjB,EAAG,MAAM,YAAY,iBAAkB,GAAGiB,EAAO,KAAK,EACtDjB,EAAG,MAAM,YAAY,iBAAkB,GAAGiB,EAAO,KAAK,CACxD,EAGA,UAAW,CACTjB,EAAG,MAAM,eAAe,gBAAgB,EACxCA,EAAG,MAAM,eAAe,gBAAgB,CAC1C,CACF,CAAC,EAGD2B,GAAuB3B,CAAE,EACtB,KACC4B,GAAUH,CAAK,CACjB,EACG,UAAUI,GAAW,CACpB7B,EAAG,gBAAgB,kBAAmB6B,CAAO,CAC/C,CAAC,EAGLC,EACEP,EAAM,KAAKQ,EAAO,CAAC,CAAE,OAAAf,CAAO,IAAMA,CAAM,CAAC,EACzCO,EAAM,KAAKS,GAAa,GAAG,EAAGD,EAAO,CAAC,CAAE,OAAAf,CAAO,IAAM,CAACA,CAAM,CAAC,CAC/D,EACG,UAAU,CAGT,KAAK,CAAE,OAAAA,CAAO,EAAG,CACXA,EACFhB,EAAG,QAAQqB,CAAO,EAElBA,EAAQ,OAAO,CACnB,EAGA,UAAW,CACTrB,EAAG,QAAQqB,CAAO,CACpB,CACF,CAAC,EAGHE,EACG,KACCU,GAAU,GAAIC,EAAuB,CACvC,EACG,UAAU,CAAC,CAAE,OAAAlB,CAAO,IAAM,CACzBK,EAAQ,UAAU,OAAO,qBAAsBL,CAAM,CACvD,CAAC,EAGLO,EACG,KACCY,GAAa,IAAKD,EAAuB,EACzCH,EAAO,IAAM,CAAC,CAAC/B,EAAG,YAAY,EAC9BO,EAAI,IAAMP,EAAG,aAAc,sBAAsB,CAAC,EAClDO,EAAI,CAAC,CAAE,EAAAC,CAAE,IAAMA,CAAC,CAClB,EACG,UAAU,CAGT,KAAK4B,EAAQ,CACPA,EACFpC,EAAG,MAAM,YAAY,iBAAkB,GAAG,CAACoC,KAAU,EAErDpC,EAAG,MAAM,eAAe,gBAAgB,CAC5C,EAGA,UAAW,CACTA,EAAG,MAAM,eAAe,gBAAgB,CAC1C,CACF,CAAC,EAGLqC,EAAsBf,EAAO,OAAO,EACjC,KACCM,GAAUH,CAAK,EACfM,EAAOO,GAAM,EAAEA,EAAG,SAAWA,EAAG,QAAQ,CAC1C,EACG,UAAUA,GAAMA,EAAG,eAAe,CAAC,EAGxCD,EAAsBf,EAAO,WAAW,EACrC,KACCM,GAAUH,CAAK,EACfc,GAAehB,CAAK,CACtB,EACG,UAAU,CAAC,CAACe,EAAI,CAAE,OAAAtB,CAAO,CAAC,IAAM,CAvOzC,IAAAwB,EA0OU,GAAIF,EAAG,SAAW,GAAKA,EAAG,SAAWA,EAAG,QACtCA,EAAG,eAAe,UAGTtB,EAAQ,CACjBsB,EAAG,eAAe,EAGlB,IAAMG,EAASzC,EAAG,cAAe,QAAQ,gBAAgB,EACrDyC,aAAkB,YACpBA,EAAO,MAAM,GAEbD,EAAAE,GAAiB,IAAjB,MAAAF,EAAoB,MACxB,CACF,CAAC,EAGLpB,EACG,KACCQ,GAAUH,CAAK,EACfM,EAAOY,GAAUA,IAAWtB,CAAO,EACnCuB,GAAM,GAAG,CACX,EACG,UAAU,IAAM5C,EAAG,MAAM,CAAC,EAGxBD,GAAgBC,EAAIC,CAAS,EACjC,KACC4C,EAAIC,GAASvB,EAAM,KAAKuB,CAAK,CAAC,EAC9BC,EAAS,IAAMxB,EAAM,SAAS,CAAC,EAC/BhB,EAAIuC,GAAUE,EAAA,CAAE,IAAKhD,GAAO8C,EAAQ,CACtC,CACJ,CAAC,CACH,CCrMA,SAASG,GAAsBC,EAAgC,CAC7D,IAAMC,EAAkB,CAAC,EACzB,QAAWC,KAAMC,EAAY,eAAgBH,CAAS,EAAG,CACvD,IAAMI,EAAgB,CAAC,EAGjBC,EAAK,SAAS,mBAAmBH,EAAI,WAAW,SAAS,EAC/D,QAASI,EAAOD,EAAG,SAAS,EAAGC,EAAMA,EAAOD,EAAG,SAAS,EACtDD,EAAM,KAAKE,CAAY,EAGzB,QAASC,KAAQH,EAAO,CACtB,IAAII,EAGJ,KAAQA,EAAQ,gBAAgB,KAAKD,EAAK,WAAY,GAAI,CACxD,GAAM,CAAC,CAAEE,EAAIC,CAAK,EAAIF,EACtB,GAAI,OAAOE,GAAU,YAAa,CAChC,IAAMC,EAASJ,EAAK,UAAUC,EAAM,KAAK,EACzCD,EAAOI,EAAO,UAAUF,EAAG,MAAM,EACjCR,EAAQ,KAAKU,CAAM,CAGrB,KAAO,CACLJ,EAAK,YAAcE,EACnBR,EAAQ,KAAKM,CAAI,EACjB,KACF,CACF,CACF,CACF,CACA,OAAON,CACT,CAQA,SAASW,GAAKC,EAAqBC,EAA2B,CAC5DA,EAAO,OAAO,GAAG,MAAM,KAAKD,EAAO,UAAU,CAAC,CAChD,CAoBO,SAASE,GACdb,EAAiBF,EAAwB,CAAE,QAAAgB,EAAS,OAAAC,CAAO,EACxB,CAGnC,IAAMC,EAASlB,EAAU,QAAQ,MAAM,EACjCmB,EAASD,GAAA,YAAAA,EAAQ,GAGjBE,EAAc,IAAI,IACxB,QAAWT,KAAUZ,GAAsBC,CAAS,EAAG,CACrD,GAAM,CAAC,CAAES,CAAE,EAAIE,EAAO,YAAa,MAAM,WAAW,EAChDU,GAAmB,gBAAgBZ,KAAOP,CAAE,IAC9CkB,EAAY,IAAIX,EAAIa,GAAiBb,EAAIU,CAAM,CAAC,EAChDR,EAAO,YAAYS,EAAY,IAAIX,CAAE,CAAE,EAE3C,CAGA,OAAIW,EAAY,OAAS,EAChBG,EAGFC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAGZC,EAAsC,CAAC,EAC7C,OAAW,CAAClB,EAAImB,CAAU,IAAKR,EAC7BO,EAAM,KAAK,CACTE,EAAW,cAAeD,CAAU,EACpCC,EAAW,gBAAgBpB,KAAOP,CAAE,CACtC,CAAC,EAGH,OAAAe,EACG,KACCa,GAAUL,EAAM,KAAKM,GAAS,CAAC,CAAC,CAAC,CACnC,EACG,UAAUC,GAAU,CACnB9B,EAAG,OAAS,CAAC8B,EAGb,OAAW,CAACC,EAAOC,CAAK,IAAKP,EACtBK,EAGHpB,GAAKqB,EAAOC,CAAK,EAFjBtB,GAAKsB,EAAOD,CAAK,CAGvB,CAAC,EAGEE,EAAM,GAAG,CAAC,GAAGf,CAAW,EAC5B,IAAI,CAAC,CAAC,CAAEQ,CAAU,IACjBQ,GAAgBR,EAAY5B,EAAW,CAAE,QAAAgB,CAAQ,CAAC,CACnD,CACH,EACG,KACCqB,EAAS,IAAMZ,EAAM,SAAS,CAAC,EAC/Ba,GAAM,CACR,CACJ,CAAC,CACH,CV9GA,IAAIC,GAAW,EAaf,SAASC,GAAkBC,EAA0C,CACnE,GAAIA,EAAG,mBAAoB,CACzB,IAAMC,EAAUD,EAAG,mBACnB,GAAIC,EAAQ,UAAY,KACtB,OAAOA,EAGJ,GAAIA,EAAQ,UAAY,KAAO,CAACA,EAAQ,SAAS,OACpD,OAAOF,GAAkBE,CAAO,CACpC,CAIF,CAgBO,SAASC,GACdF,EACuB,CACvB,OAAOG,GAAiBH,CAAE,EACvB,KACCI,EAAI,CAAC,CAAE,MAAAC,CAAM,KAEJ,CACL,WAFcC,GAAsBN,CAAE,EAElB,MAAQK,CAC9B,EACD,EACDE,EAAwB,YAAY,CACtC,CACJ,CAoBO,SAASC,GACdR,EAAiBS,EAC8B,CAC/C,GAAM,CAAE,QAASC,CAAM,EAAI,WAAW,SAAS,EAGzCC,EAAWC,EAAM,IAAM,CAC3B,IAAMC,EAAQ,IAAIC,EASlB,GARAD,EAAM,UAAU,CAAC,CAAE,WAAAE,CAAW,IAAM,CAC9BA,GAAcL,EAChBV,EAAG,aAAa,WAAY,GAAG,EAE/BA,EAAG,gBAAgB,UAAU,CACjC,CAAC,EAGG,GAAAgB,QAAY,YAAY,EAAG,CAC7B,IAAMC,EAASjB,EAAG,QAAQ,KAAK,EAC/BiB,EAAO,GAAK,UAAU,EAAEnB,KACxBmB,EAAO,aACLC,GAAsBD,EAAO,EAAE,EAC/BjB,CACF,CACF,CAGA,IAAMmB,EAAYnB,EAAG,QAAQ,YAAY,EACzC,GAAImB,aAAqB,YAAa,CACpC,IAAMC,EAAOrB,GAAkBoB,CAAS,EAGxC,GAAI,OAAOC,GAAS,cAClBD,EAAU,UAAU,SAAS,UAAU,GACvCE,EAAQ,uBAAuB,GAC9B,CACD,IAAMC,EAAeC,GAAoBH,EAAMpB,EAAIS,CAAO,EAG1D,OAAOP,GAAeF,CAAE,EACrB,KACCwB,EAAIC,GAASZ,EAAM,KAAKY,CAAK,CAAC,EAC9BC,EAAS,IAAMb,EAAM,SAAS,CAAC,EAC/BT,EAAIqB,GAAUE,EAAA,CAAE,IAAK3B,GAAOyB,EAAQ,EACpCG,GACEzB,GAAiBgB,CAAS,EACvB,KACCf,EAAI,CAAC,CAAE,MAAAC,EAAO,OAAAwB,CAAO,IAAMxB,GAASwB,CAAM,EAC1CC,EAAqB,EACrBC,EAAUC,GAAUA,EAASV,EAAeW,CAAK,CACnD,CACJ,CACF,CACJ,CACF,CAGA,OAAO/B,GAAeF,CAAE,EACrB,KACCwB,EAAIC,GAASZ,EAAM,KAAKY,CAAK,CAAC,EAC9BC,EAAS,IAAMb,EAAM,SAAS,CAAC,EAC/BT,EAAIqB,GAAUE,EAAA,CAAE,IAAK3B,GAAOyB,EAAQ,CACtC,CACJ,CAAC,EAGD,OAAIJ,EAAQ,cAAc,EACjBa,GAAuBlC,CAAE,EAC7B,KACCmC,EAAOC,GAAWA,CAAO,EACzBC,GAAK,CAAC,EACNN,EAAU,IAAMpB,CAAQ,CAC1B,EAGGA,CACT,iyJWpLA,IAAI2B,GAKAC,GAAW,EAWf,SAASC,IAAiC,CACxC,OAAO,OAAO,SAAY,aAAe,mBAAmB,QACxDC,GAAY,qDAAqD,EACjEC,EAAG,MAAS,CAClB,CAaO,SAASC,GACdC,EACgC,CAChC,OAAAA,EAAG,UAAU,OAAO,SAAS,EAC7BN,QAAaE,GAAa,EACvB,KACCK,EAAI,IAAM,QAAQ,WAAW,CAC3B,YAAa,GACb,SAAAC,GACA,SAAU,CACR,cAAe,OACf,gBAAiB,OACjB,aAAc,MAChB,CACF,CAAC,CAAC,EACFC,EAAI,IAAG,EAAY,EACnBC,EAAY,CAAC,CACf,GAGFV,GAAS,UAAU,IAAM,CACvBM,EAAG,UAAU,IAAI,SAAS,EAC1B,IAAMK,EAAK,aAAaV,OAClBW,EAAOC,EAAE,MAAO,CAAE,MAAO,SAAU,CAAC,EAC1C,QAAQ,WAAW,OAAOF,EAAIL,EAAG,YAAcQ,GAAgB,CAG7D,IAAMC,EAASH,EAAK,aAAa,CAAE,KAAM,QAAS,CAAC,EACnDG,EAAO,UAAYD,EAGnBR,EAAG,YAAYM,CAAI,CACrB,CAAC,CACH,CAAC,EAGMZ,GACJ,KACCS,EAAI,KAAO,CAAE,IAAKH,CAAG,EAAE,CACzB,CACJ,CC/CO,SAASU,GACdC,EAAwB,CAAE,QAAAC,EAAS,OAAAC,CAAO,EACrB,CACrB,IAAIC,EAAO,GACX,OAAOC,EAGLH,EACG,KACCI,EAAIC,GAAUA,EAAO,QAAQ,qBAAqB,CAAE,EACpDC,EAAOC,GAAWR,IAAOQ,CAAO,EAChCH,EAAI,KAAO,CACT,OAAQ,OAAQ,OAAQ,EAC1B,EAAa,CACf,EAGFH,EACG,KACCK,EAAOE,GAAUA,GAAU,CAACN,CAAI,EAChCO,EAAI,IAAMP,EAAOH,EAAG,IAAI,EACxBK,EAAII,IAAW,CACb,OAAQA,EAAS,OAAS,OAC5B,EAAa,CACf,CACJ,CACF,CAaO,SAASE,GACdX,EAAwBY,EACQ,CAChC,OAAOC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EAAM,UAAU,CAAC,CAAE,OAAAE,EAAQ,OAAAC,CAAO,IAAM,CACtCjB,EAAG,gBAAgB,OAAQgB,IAAW,MAAM,EACxCC,GACFjB,EAAG,eAAe,CACtB,CAAC,EAGMD,GAAaC,EAAIY,CAAO,EAC5B,KACCF,EAAIQ,GAASJ,EAAM,KAAKI,CAAK,CAAC,EAC9BC,EAAS,IAAML,EAAM,SAAS,CAAC,EAC/BT,EAAIa,GAAUE,EAAA,CAAE,IAAKpB,GAAOkB,EAAQ,CACtC,CACJ,CAAC,CACH,CC5FA,IAAMG,GAAWC,EAAE,OAAO,EAgBnB,SAASC,GACdC,EACkC,CAClC,OAAAA,EAAG,YAAYH,EAAQ,EACvBA,GAAS,YAAYI,GAAYD,CAAE,CAAC,EAG7BE,EAAG,CAAE,IAAKF,CAAG,CAAC,CACvB,CCuBO,SAASG,GACdC,EACyB,CACzB,IAAMC,EAASC,EAA8B,iBAAkBF,CAAE,EAC3DG,EAAUF,EAAO,KAAKG,GAASA,EAAM,OAAO,GAAKH,EAAO,GAC9D,OAAOI,EAAM,GAAGJ,EAAO,IAAIG,GAASE,EAAUF,EAAO,QAAQ,EAC1D,KACCG,EAAI,IAAMC,EAA6B,cAAcJ,EAAM,MAAM,CAAC,CACpE,CACF,CAAC,EACE,KACCK,EAAUD,EAA6B,cAAcL,EAAQ,MAAM,CAAC,EACpEI,EAAIG,IAAW,CAAE,OAAAA,CAAO,EAAE,CAC5B,CACJ,CAeO,SAASC,GACdX,EAAiB,CAAE,UAAAY,CAAU,EACO,CAGpC,IAAMC,EAAOC,GAAoB,MAAM,EACvCd,EAAG,OAAOa,CAAI,EAGd,IAAME,EAAOD,GAAoB,MAAM,EACvCd,EAAG,OAAOe,CAAI,EAGd,IAAMC,EAAYR,EAAW,iBAAkBR,CAAE,EACjD,OAAOiB,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EACpC,OAAAC,EAAc,CAACJ,EAAOK,GAAiBvB,CAAE,CAAC,CAAC,EACxC,KACCwB,GAAU,EAAGC,EAAuB,EACpCC,GAAUN,CAAK,CACjB,EACG,UAAU,CAGT,KAAK,CAAC,CAAE,OAAAV,CAAO,EAAGiB,CAAI,EAAG,CACvB,IAAMC,EAASC,GAAiBnB,CAAM,EAChC,CAAE,MAAAoB,CAAM,EAAIC,GAAerB,CAAM,EAGvCV,EAAG,MAAM,YAAY,mBAAoB,GAAG4B,EAAO,KAAK,EACxD5B,EAAG,MAAM,YAAY,uBAAwB,GAAG8B,KAAS,EAGzD,IAAME,EAAUC,GAAwBjB,CAAS,GAE/CY,EAAO,EAAYI,EAAQ,GAC3BJ,EAAO,EAAIE,EAAQE,EAAQ,EAAIL,EAAK,QAEpCX,EAAU,SAAS,CACjB,KAAM,KAAK,IAAI,EAAGY,EAAO,EAAI,EAAE,EAC/B,SAAU,QACZ,CAAC,CACL,EAGA,UAAW,CACT5B,EAAG,MAAM,eAAe,kBAAkB,EAC1CA,EAAG,MAAM,eAAe,sBAAsB,CAChD,CACF,CAAC,EAGLsB,EAAc,CACZY,GAA0BlB,CAAS,EACnCO,GAAiBP,CAAS,CAC5B,CAAC,EACE,KACCU,GAAUN,CAAK,CACjB,EACG,UAAU,CAAC,CAACQ,EAAQD,CAAI,IAAM,CAC7B,IAAMK,EAAUG,GAAsBnB,CAAS,EAC/CH,EAAK,OAASe,EAAO,EAAI,GACzBb,EAAK,OAASa,EAAO,EAAII,EAAQ,MAAQL,EAAK,MAAQ,EACxD,CAAC,EAGLtB,EACEC,EAAUO,EAAM,OAAO,EAAE,KAAKN,EAAI,IAAM,EAAE,CAAC,EAC3CD,EAAUS,EAAM,OAAO,EAAE,KAAKR,EAAI,IAAM,CAAE,CAAC,CAC7C,EACG,KACCmB,GAAUN,CAAK,CACjB,EACG,UAAUgB,GAAa,CACtB,GAAM,CAAE,MAAAN,CAAM,EAAIC,GAAef,CAAS,EAC1CA,EAAU,SAAS,CACjB,KAAMc,EAAQM,EACd,SAAU,QACZ,CAAC,CACH,CAAC,EAGDC,EAAQ,mBAAmB,GAC7BnB,EAAM,KACJoB,GAAK,CAAC,EACNC,GAAe3B,CAAS,CAC1B,EACG,UAAU,CAAC,CAAC,CAAE,OAAAF,CAAO,EAAG,CAAE,OAAAkB,CAAO,CAAC,IAAM,CACvC,IAAMY,EAAM9B,EAAO,UAAU,KAAK,EAClC,GAAIA,EAAO,aAAa,mBAAmB,EACzCA,EAAO,gBAAgB,mBAAmB,MAGrC,CACL,IAAM+B,EAAIzC,EAAG,UAAY4B,EAAO,EAGhC,QAAWc,KAAOxC,EAAY,aAAa,EACzC,QAAWE,KAASF,EAClB,iBAAkBwC,CACpB,EAAG,CACD,IAAMC,EAAQnC,EAAW,cAAcJ,EAAM,MAAM,EACnD,GACEuC,IAAUjC,GACViC,EAAM,UAAU,KAAK,IAAMH,EAC3B,CACAG,EAAM,aAAa,oBAAqB,EAAE,EAC1CvC,EAAM,MAAM,EACZ,KACF,CACF,CAGF,OAAO,SAAS,CACd,IAAKJ,EAAG,UAAYyC,CACtB,CAAC,EAGD,IAAMG,EAAO,SAAmB,QAAQ,GAAK,CAAC,EAC9C,SAAS,SAAU,CAAC,GAAG,IAAI,IAAI,CAACJ,EAAK,GAAGI,CAAI,CAAC,CAAC,CAAC,CACjD,CACF,CAAC,EAGE7C,GAAiBC,CAAE,EACvB,KACC6C,EAAIC,GAAS5B,EAAM,KAAK4B,CAAK,CAAC,EAC9BC,EAAS,IAAM7B,EAAM,SAAS,CAAC,EAC/BX,EAAIuC,GAAUE,EAAA,CAAE,IAAKhD,GAAO8C,EAAQ,CACtC,CACJ,CAAC,EACE,KACCG,GAAYC,EAAc,CAC5B,CACJ,CCtKO,SAASC,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,EAAS,OAAAC,CAAO,EACd,CAChC,OAAOC,EAGL,GAAGC,EAAY,2BAA4BL,CAAE,EAC1C,IAAIM,GAASC,GAAeD,EAAO,CAAE,QAAAJ,EAAS,OAAAC,CAAO,CAAC,CAAC,EAG1D,GAAGE,EAAY,cAAeL,CAAE,EAC7B,IAAIM,GAASE,GAAaF,CAAK,CAAC,EAGnC,GAAGD,EAAY,qBAAsBL,CAAE,EACpC,IAAIM,GAASG,GAAeH,CAAK,CAAC,EAGrC,GAAGD,EAAY,UAAWL,CAAE,EACzB,IAAIM,GAASI,GAAaJ,EAAO,CAAE,QAAAJ,EAAS,OAAAC,CAAO,CAAC,CAAC,EAGxD,GAAGE,EAAY,cAAeL,CAAE,EAC7B,IAAIM,GAASK,GAAiBL,EAAO,CAAE,UAAAL,CAAU,CAAC,CAAC,CACxD,CACF,CClCO,SAASW,GACdC,EAAkB,CAAE,OAAAC,CAAO,EACP,CACpB,OAAOA,EACJ,KACCC,EAAUC,GAAWC,EACnBC,EAAG,EAAI,EACPA,EAAG,EAAK,EAAE,KAAKC,GAAM,GAAI,CAAC,CAC5B,EACG,KACCC,EAAIC,IAAW,CAAE,QAAAL,EAAS,OAAAK,CAAO,EAAE,CACrC,CACF,CACF,CACJ,CAaO,SAASC,GACdC,EAAiBC,EACc,CAC/B,IAAMC,EAAQC,EAAW,cAAeH,CAAE,EAC1C,OAAOI,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EAAM,UAAU,CAAC,CAAE,QAAAZ,EAAS,OAAAK,CAAO,IAAM,CACvCE,EAAG,UAAU,OAAO,oBAAqBF,CAAM,EAC/CI,EAAM,YAAcT,CACtB,CAAC,EAGMJ,GAAYW,EAAIC,CAAO,EAC3B,KACCM,EAAIC,GAASH,EAAM,KAAKG,CAAK,CAAC,EAC9BC,EAAS,IAAMJ,EAAM,SAAS,CAAC,EAC/BR,EAAIW,GAAUE,EAAA,CAAE,IAAKV,GAAOQ,EAAQ,CACtC,CACJ,CAAC,CACH,CC9BA,SAASG,GAAS,CAAE,UAAAC,CAAU,EAAsC,CAClE,GAAI,CAACC,EAAQ,iBAAiB,EAC5B,OAAOC,EAAG,EAAK,EAGjB,IAAMC,EAAaH,EAChB,KACCI,EAAI,CAAC,CAAE,OAAQ,CAAE,EAAAC,CAAE,CAAE,IAAMA,CAAC,EAC5BC,GAAY,EAAG,CAAC,EAChBF,EAAI,CAAC,CAACG,EAAGC,CAAC,IAAM,CAACD,EAAIC,EAAGA,CAAC,CAAU,EACnCC,EAAwB,CAAC,CAC3B,EAGIC,EAAUC,EAAc,CAACX,EAAWG,CAAU,CAAC,EAClD,KACCS,EAAO,CAAC,CAAC,CAAE,OAAAC,CAAO,EAAG,CAAC,CAAER,CAAC,CAAC,IAAM,KAAK,IAAIA,EAAIQ,EAAO,CAAC,EAAI,GAAG,EAC5DT,EAAI,CAAC,CAAC,CAAE,CAACU,CAAS,CAAC,IAAMA,CAAS,EAClCC,EAAqB,CACvB,EAGIC,EAAUC,GAAY,QAAQ,EACpC,OAAON,EAAc,CAACX,EAAWgB,CAAO,CAAC,EACtC,KACCZ,EAAI,CAAC,CAAC,CAAE,OAAAS,CAAO,EAAGK,CAAM,IAAML,EAAO,EAAI,KAAO,CAACK,CAAM,EACvDH,EAAqB,EACrBI,EAAUC,GAAUA,EAASV,EAAUR,EAAG,EAAK,CAAC,EAChDmB,EAAU,EAAK,CACjB,CACJ,CAcO,SAASC,GACdC,EAAiBC,EACG,CACpB,OAAOC,EAAM,IAAMd,EAAc,CAC/Be,GAAiBH,CAAE,EACnBxB,GAASyB,CAAO,CAClB,CAAC,CAAC,EACC,KACCpB,EAAI,CAAC,CAAC,CAAE,OAAAuB,CAAO,EAAGC,CAAM,KAAO,CAC7B,OAAAD,EACA,OAAAC,CACF,EAAE,EACFb,EAAqB,CAACR,EAAGC,IACvBD,EAAE,SAAWC,EAAE,QACfD,EAAE,SAAWC,EAAE,MAChB,EACDqB,EAAY,CAAC,CACf,CACJ,CAaO,SAASC,GACdP,EAAiB,CAAE,QAAAQ,EAAS,MAAAC,CAAM,EACH,CAC/B,OAAOP,EAAM,IAAM,CACjB,IAAMQ,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EACpC,OAAAH,EACG,KACCxB,EAAwB,QAAQ,EAChC4B,GAAkBN,CAAO,CAC3B,EACG,UAAU,CAAC,CAAC,CAAE,OAAAX,CAAO,EAAG,CAAE,OAAAQ,CAAO,CAAC,IAAM,CACvCL,EAAG,UAAU,OAAO,oBAAqBH,GAAU,CAACQ,CAAM,EAC1DL,EAAG,OAASK,CACd,CAAC,EAGLI,EAAM,UAAUC,CAAK,EAGdF,EACJ,KACCO,GAAUH,CAAK,EACf/B,EAAImC,GAAUC,EAAA,CAAE,IAAKjB,GAAOgB,EAAQ,CACtC,CACJ,CAAC,CACH,CChHO,SAASE,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACb,CACzB,OAAOC,GAAgBH,EAAI,CAAE,UAAAC,EAAW,QAAAC,CAAQ,CAAC,EAC9C,KACCE,EAAI,CAAC,CAAE,OAAQ,CAAE,EAAAC,CAAE,CAAE,IAAM,CACzB,GAAM,CAAE,OAAAC,CAAO,EAAIC,GAAeP,CAAE,EACpC,MAAO,CACL,OAAQK,GAAKC,CACf,CACF,CAAC,EACDE,EAAwB,QAAQ,CAClC,CACJ,CAaO,SAASC,GACdT,EAAiBU,EACmB,CACpC,OAAOC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClBD,EAAM,UAAU,CAAC,CAAE,OAAAE,CAAO,IAAM,CAC9Bd,EAAG,UAAU,OAAO,2BAA4Bc,CAAM,CACxD,CAAC,EAGD,IAAMC,EAAUC,GAAmB,YAAY,EAC/C,OAAI,OAAOD,GAAY,YACdE,EAGFlB,GAAiBgB,EAASL,CAAO,EACrC,KACCQ,EAAIC,GAASP,EAAM,KAAKO,CAAK,CAAC,EAC9BC,EAAS,IAAMR,EAAM,SAAS,CAAC,EAC/BR,EAAIe,GAAUE,EAAA,CAAE,IAAKrB,GAAOmB,EAAQ,CACtC,CACJ,CAAC,CACH,CCvDO,SAASG,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACpB,CAGlB,IAAMC,EAAUD,EACb,KACCE,EAAI,CAAC,CAAE,OAAAC,CAAO,IAAMA,CAAM,EAC1BC,EAAqB,CACvB,EAGIC,EAAUJ,EACb,KACCK,EAAU,IAAMC,GAAiBT,CAAE,EAChC,KACCI,EAAI,CAAC,CAAE,OAAAC,CAAO,KAAO,CACnB,IAAQL,EAAG,UACX,OAAQA,EAAG,UAAYK,CACzB,EAAE,EACFK,EAAwB,QAAQ,CAClC,CACF,CACF,EAGF,OAAOC,EAAc,CAACR,EAASI,EAASN,CAAS,CAAC,EAC/C,KACCG,EAAI,CAAC,CAACQ,EAAQ,CAAE,IAAAC,EAAK,OAAAC,CAAO,EAAG,CAAE,OAAQ,CAAE,EAAAC,CAAE,EAAG,KAAM,CAAE,OAAAV,CAAO,CAAE,CAAC,KAChEA,EAAS,KAAK,IAAI,EAAGA,EACjB,KAAK,IAAI,EAAGQ,EAASE,EAAIH,CAAM,EAC/B,KAAK,IAAI,EAAGP,EAASU,EAAID,CAAM,CACnC,EACO,CACL,OAAQD,EAAMD,EACd,OAAAP,EACA,OAAQQ,EAAMD,GAAUG,CAC1B,EACD,EACDT,EAAqB,CAACU,EAAGC,IACvBD,EAAE,SAAWC,EAAE,QACfD,EAAE,SAAWC,EAAE,QACfD,EAAE,SAAWC,EAAE,MAChB,CACH,CACJ,CClDO,SAASC,GACdC,EACqB,CACrB,IAAMC,EAAU,SAAkB,WAAW,GAAK,CAChD,MAAOD,EAAO,UAAUE,GAAS,WAC/BA,EAAM,aAAa,qBAAqB,CAC1C,EAAE,OAAO,CACX,EAGA,OAAOC,EAAG,GAAGH,CAAM,EAChB,KACCI,GAASF,GAASG,EAAUH,EAAO,QAAQ,EACxC,KACCI,EAAI,IAAMJ,CAAK,CACjB,CACF,EACAK,EAAUP,EAAO,KAAK,IAAI,EAAGC,EAAQ,KAAK,EAAE,EAC5CK,EAAIJ,IAAU,CACZ,MAAOF,EAAO,QAAQE,CAAK,EAC3B,MAAO,CACL,OAASA,EAAM,aAAa,sBAAsB,EAClD,QAASA,EAAM,aAAa,uBAAuB,EACnD,OAASA,EAAM,aAAa,sBAAsB,CACpD,CACF,EAAa,EACbM,EAAY,CAAC,CACf,CACJ,CASO,SAASC,GACdC,EACgC,CAChC,OAAOC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClBD,EAAM,UAAUE,GAAW,CACzB,SAAS,KAAK,aAAa,0BAA2B,EAAE,EAGxD,OAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQF,EAAQ,KAAK,EACrD,SAAS,KAAK,aAAa,iBAAiBC,IAAOC,CAAK,EAG1D,QAASC,EAAQ,EAAGA,EAAQjB,EAAO,OAAQiB,IAAS,CAClD,IAAMC,EAAQlB,EAAOiB,GAAO,mBACxBC,aAAiB,cACnBA,EAAM,OAASJ,EAAQ,QAAUG,EACrC,CAGA,SAAS,YAAaH,CAAO,CAC/B,CAAC,EAGDF,EAAM,KAAKO,GAAUC,EAAc,CAAC,EACjC,UAAU,IAAM,CACf,SAAS,KAAK,gBAAgB,yBAAyB,CACzD,CAAC,EAGH,IAAMpB,EAASqB,EAA8B,QAASX,CAAE,EACxD,OAAOX,GAAaC,CAAM,EACvB,KACCsB,EAAIC,GAASX,EAAM,KAAKW,CAAK,CAAC,EAC9BC,EAAS,IAAMZ,EAAM,SAAS,CAAC,EAC/BN,EAAIiB,GAAUE,EAAA,CAAE,IAAKf,GAAOa,EAAQ,CACtC,CACJ,CAAC,CACH,CC/HA,IAAAG,GAAwB,SAiCxB,SAASC,GAAQC,EAAyB,CACxCA,EAAG,aAAa,kBAAmB,EAAE,EACrC,IAAMC,EAAOD,EAAG,UAChB,OAAAA,EAAG,gBAAgB,iBAAiB,EAC7BC,CACT,CAWO,SAASC,GACd,CAAE,OAAAC,CAAO,EACH,CACF,GAAAC,QAAY,YAAY,GAC1B,IAAIC,EAA8BC,GAAc,CAC9C,IAAI,GAAAF,QAAY,iDAAkD,CAChE,KAAMJ,GACJA,EAAG,aAAa,qBAAqB,GACrCD,GAAQQ,EACNP,EAAG,aAAa,uBAAuB,CACzC,CAAC,CAEL,CAAC,EACE,GAAG,UAAWQ,GAAMF,EAAW,KAAKE,CAAE,CAAC,CAC5C,CAAC,EACE,KACCC,EAAID,GAAM,CACQA,EAAG,QACX,MAAM,CAChB,CAAC,EACDE,EAAI,IAAMC,GAAY,kBAAkB,CAAC,CAC3C,EACG,UAAUR,CAAM,CAEzB,CCrCA,SAASS,GAAWC,EAAwB,CAC1C,GAAIA,EAAK,OAAS,EAChB,MAAO,CAAC,EAAE,EAGZ,GAAM,CAACC,EAAMC,CAAI,EAAI,CAAC,GAAGF,CAAI,EAC1B,KAAK,CAACG,EAAGC,IAAMD,EAAE,OAASC,EAAE,MAAM,EAClC,IAAIC,GAAOA,EAAI,QAAQ,SAAU,EAAE,CAAC,EAGnCC,EAAQ,EACZ,GAAIL,IAASC,EACXI,EAAQL,EAAK,WAEb,MAAOA,EAAK,WAAWK,CAAK,IAAMJ,EAAK,WAAWI,CAAK,GACrDA,IAGJ,OAAON,EAAK,IAAIK,GAAOA,EAAI,QAAQJ,EAAK,MAAM,EAAGK,CAAK,EAAG,EAAE,CAAC,CAC9D,CAaO,SAASC,GAAaC,EAAiC,CAC5D,IAAMC,EAAS,SAAkB,YAAa,eAAgBD,CAAI,EAClE,GAAIC,EACF,OAAOC,EAAGD,CAAM,EACX,CACL,IAAME,EAASC,GAAc,EAC7B,OAAOC,GAAW,IAAI,IAAI,cAAeL,GAAQG,EAAO,IAAI,CAAC,EAC1D,KACCG,EAAIC,GAAWhB,GAAWiB,EAAY,MAAOD,CAAO,EACjD,IAAIE,GAAQA,EAAK,WAAY,CAChC,CAAC,EACDC,GAAW,IAAMC,CAAK,EACtBC,GAAe,CAAC,CAAC,EACjBC,EAAIN,GAAW,SAAS,YAAaA,EAAS,eAAgBP,CAAI,CAAC,CACrE,CACJ,CACF,CCIO,SAASc,GACd,CAAE,UAAAC,EAAW,UAAAC,EAAW,UAAAC,CAAU,EAC5B,CACN,IAAMC,EAASC,GAAc,EAC7B,GAAI,SAAS,WAAa,QACxB,OAGE,sBAAuB,UACzB,QAAQ,kBAAoB,SAG5BC,EAAU,OAAQ,cAAc,EAC7B,UAAU,IAAM,CACf,QAAQ,kBAAoB,MAC9B,CAAC,GAIL,IAAMC,EAAUC,GAAoC,gBAAgB,EAChE,OAAOD,GAAY,cACrBA,EAAQ,KAAOA,EAAQ,MAGzB,IAAME,EAAQC,GAAa,EACxB,KACCC,EAAIC,GAASA,EAAM,IAAIC,GAAQ,GAAG,IAAI,IAAIA,EAAMT,EAAO,IAAI,GAAG,CAAC,EAC/DU,EAAUC,GAAQT,EAAsB,SAAS,KAAM,OAAO,EAC3D,KACCU,EAAOC,GAAM,CAACA,EAAG,SAAW,CAACA,EAAG,OAAO,EACvCH,EAAUG,GAAM,CACd,GAAIA,EAAG,kBAAkB,QAAS,CAChC,IAAMC,EAAKD,EAAG,OAAO,QAAQ,GAAG,EAChC,GAAIC,GAAM,CAACA,EAAG,OAAQ,CACpB,IAAMC,EAAM,IAAI,IAAID,EAAG,IAAI,EAO3B,GAJAC,EAAI,OAAS,GACbA,EAAI,KAAO,GAITA,EAAI,WAAa,SAAS,UAC1BJ,EAAK,SAASI,EAAI,SAAS,CAAC,EAE5B,OAAAF,EAAG,eAAe,EACXG,EAAG,CACR,IAAK,IAAI,IAAIF,EAAG,IAAI,CACtB,CAAC,CAEL,CACF,CACA,OAAOG,EACT,CAAC,CACH,CACF,EACAC,GAAoB,CACtB,EAGIC,EAAOjB,EAAyB,OAAQ,UAAU,EACrD,KACCU,EAAOC,GAAMA,EAAG,QAAU,IAAI,EAC9BN,EAAIM,IAAO,CACT,IAAK,IAAI,IAAI,SAAS,IAAI,EAC1B,OAAQA,EAAG,KACb,EAAE,EACFK,GAAoB,CACtB,EAGFE,EAAMf,EAAOc,CAAI,EACd,KACCE,EAAqB,CAACC,EAAGC,IAAMD,EAAE,IAAI,OAASC,EAAE,IAAI,IAAI,EACxDhB,EAAI,CAAC,CAAE,IAAAQ,CAAI,IAAMA,CAAG,CACtB,EACG,UAAUjB,CAAS,EAGxB,IAAM0B,EAAY1B,EACf,KACC2B,EAAwB,UAAU,EAClCf,EAAUK,GAAOW,GAAQX,EAAI,IAAI,EAC9B,KACCY,GAAW,KACTC,GAAYb,CAAG,EACRE,GACR,CACH,CACF,EACAC,GAAM,CACR,EAGFb,EACG,KACCwB,GAAOL,CAAS,CAClB,EACG,UAAU,CAAC,CAAE,IAAAT,CAAI,IAAM,CACtB,QAAQ,UAAU,CAAC,EAAG,GAAI,GAAGA,GAAK,CACpC,CAAC,EAGL,IAAMe,EAAM,IAAI,UAChBN,EACG,KACCd,EAAUqB,GAAOA,EAAI,KAAK,CAAC,EAC3BxB,EAAIwB,GAAOD,EAAI,gBAAgBC,EAAK,WAAW,CAAC,CAClD,EACG,UAAUlC,CAAS,EAGxBA,EACG,KACCmC,GAAK,CAAC,CACR,EACG,UAAUC,GAAe,CACxB,QAAWC,IAAY,CAGrB,QACA,sBACA,oBACA,yBAGA,+BACA,gCACA,mCACA,+BACA,2BACA,2BACA,GAAGC,EAAQ,wBAAwB,EAC/B,CAAC,0BAA0B,EAC3B,CAAC,CACP,EAAG,CACD,IAAMC,EAAShC,GAAmB8B,CAAQ,EACpCG,EAASjC,GAAmB8B,EAAUD,CAAW,EAErD,OAAOG,GAAW,aAClB,OAAOC,GAAW,aAElBD,EAAO,YAAYC,CAAM,CAE7B,CACF,CAAC,EAGLxC,EACG,KACCmC,GAAK,CAAC,EACNzB,EAAI,IAAM+B,GAAoB,WAAW,CAAC,EAC1C5B,EAAUI,GAAMyB,EAAY,SAAUzB,CAAE,CAAC,EACzC0B,GAAU1B,GAAM,CACd,IAAM2B,EAASC,EAAE,QAAQ,EACzB,GAAI5B,EAAG,IAAK,CACV,QAAW6B,KAAQ7B,EAAG,kBAAkB,EACtC2B,EAAO,aAAaE,EAAM7B,EAAG,aAAa6B,CAAI,CAAE,EAClD,OAAA7B,EAAG,YAAY2B,CAAM,EAGd,IAAIG,EAAWC,GAAY,CAChCJ,EAAO,OAAS,IAAMI,EAAS,SAAS,CAC1C,CAAC,CAGH,KACE,QAAAJ,EAAO,YAAc3B,EAAG,YACxBA,EAAG,YAAY2B,CAAM,EACdK,CAEX,CAAC,CACH,EACG,UAAU,EAGf1B,EAAMf,EAAOc,CAAI,EACd,KACCU,GAAOhC,CAAS,CAClB,EACG,UAAU,CAAC,CAAE,IAAAkB,EAAK,OAAAgC,CAAO,IAAM,CAC1BhC,EAAI,MAAQ,CAACgC,EACfC,GAAgBjC,EAAI,IAAI,EAExB,OAAO,SAAS,GAAGgC,GAAA,YAAAA,EAAQ,IAAK,CAAC,CAErC,CAAC,EAGLhD,EACG,KACCkD,GAAU5C,CAAK,EACf6C,GAAa,GAAG,EAChBzB,EAAwB,QAAQ,CAClC,EACG,UAAU,CAAC,CAAE,OAAAsB,CAAO,IAAM,CACzB,QAAQ,aAAaA,EAAQ,EAAE,CACjC,CAAC,EAGL3B,EAAMf,EAAOc,CAAI,EACd,KACCgC,GAAY,EAAG,CAAC,EAChBvC,EAAO,CAAC,CAACU,EAAGC,CAAC,IAAMD,EAAE,IAAI,WAAaC,EAAE,IAAI,QAAQ,EACpDhB,EAAI,CAAC,CAAC,CAAE6C,CAAK,IAAMA,CAAK,CAC1B,EACG,UAAU,CAAC,CAAE,OAAAL,CAAO,IAAM,CACzB,OAAO,SAAS,GAAGA,GAAA,YAAAA,EAAQ,IAAK,CAAC,CACnC,CAAC,CACP,CCzSA,IAAAM,GAAuB,SCAvB,IAAAC,GAAuB,SAsChB,SAASC,GACdC,EAA2BC,EACD,CAC1B,IAAMC,EAAY,IAAI,OAAOF,EAAO,UAAW,KAAK,EAC9CG,EAAY,CAACC,EAAYC,EAAcC,IACpC,GAAGD,4BAA+BC,WAI3C,OAAQC,GAAkB,CACxBA,EAAQA,EACL,QAAQ,gBAAiB,GAAG,EAC5B,KAAK,EAGR,IAAMC,EAAQ,IAAI,OAAO,MAAMR,EAAO,cACpCO,EACG,QAAQ,uBAAwB,MAAM,EACtC,QAAQL,EAAW,GAAG,KACtB,KAAK,EAGV,OAAOO,IACLR,KACI,GAAAS,SAAWD,CAAK,EAChBA,GAED,QAAQD,EAAOL,CAAS,EACxB,QAAQ,8BAA+B,IAAI,CAClD,CACF,CC9BO,SAASQ,GAAiBC,EAAuB,CACtD,OAAOA,EACJ,MAAM,YAAY,EAChB,IAAI,CAACC,EAAOC,IAAUA,EAAQ,EAC3BD,EAAM,QAAQ,+BAAgC,IAAI,EAClDA,CACJ,EACC,KAAK,EAAE,EACT,QAAQ,kCAAmC,EAAE,EAC7C,KAAK,CACV,CCoCO,SAASE,GACdC,EAC+B,CAC/B,OAAOA,EAAQ,OAAS,CAC1B,CASO,SAASC,GACdD,EAC+B,CAC/B,OAAOA,EAAQ,OAAS,CAC1B,CASO,SAASE,GACdF,EACgC,CAChC,OAAOA,EAAQ,OAAS,CAC1B,CCvEA,SAASG,GAAiB,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAA6B,CAGhED,EAAO,KAAK,SAAW,GAAKA,EAAO,KAAK,KAAO,OACjDA,EAAO,KAAO,CACZE,GAAY,oBAAoB,CAClC,GAGEF,EAAO,YAAc,cACvBA,EAAO,UAAYE,GAAY,yBAAyB,GAQ1D,IAAMC,EAAyB,CAC7B,SANeD,GAAY,wBAAwB,EAClD,MAAM,SAAS,EACf,OAAO,OAAO,EAKf,YAAaE,EAAQ,gBAAgB,CACvC,EAGA,MAAO,CAAE,OAAAJ,EAAQ,KAAAC,EAAM,QAAAE,CAAQ,CACjC,CAkBO,SAASE,GACdC,EAAaC,EACC,CACd,IAAMP,EAASQ,GAAc,EACvBC,EAAS,IAAI,OAAOH,CAAG,EAGvBI,EAAM,IAAIC,EACVC,EAAMC,GAAYJ,EAAQ,CAAE,IAAAC,CAAI,CAAC,EACpC,KACCI,EAAIC,GAAW,CACb,GAAIC,GAAsBD,CAAO,EAC/B,QAAWE,KAAUF,EAAQ,KAAK,MAChC,QAAWG,KAAYD,EACrBC,EAAS,SAAW,GAAG,IAAI,IAAIA,EAAS,SAAUlB,EAAO,IAAI,IAEnE,OAAOe,CACT,CAAC,EACDI,GAAM,CACR,EAGF,OAAAC,GAAKb,CAAK,EACP,KACCO,EAAIO,IAAS,CACX,OACA,KAAMtB,GAAiBsB,CAAI,CAC7B,EAAwB,CAC1B,EACG,UAAUX,EAAI,KAAK,KAAKA,CAAG,CAAC,EAG1B,CAAE,IAAAA,EAAK,IAAAE,CAAI,CACpB,CCvEO,SAASU,GACd,CAAE,UAAAC,CAAU,EACN,CACN,IAAMC,EAASC,GAAc,EACvBC,EAAYC,GAChB,IAAI,IAAI,mBAAoBH,EAAO,IAAI,CACzC,EACG,KACCI,GAAW,IAAMC,CAAK,CACxB,EAGIC,EAAWJ,EACd,KACCK,EAAIC,GAAY,CACd,GAAM,CAAC,CAAEC,CAAO,EAAIT,EAAO,KAAK,MAAM,aAAa,EACnD,OAAOQ,EAAS,KAAK,CAAC,CAAE,QAAAE,EAAS,QAAAC,CAAQ,IACvCD,IAAYD,GAAWE,EAAQ,SAASF,CAAO,CAChD,GAAKD,EAAS,EACjB,CAAC,CACH,EAGFN,EACG,KACCK,EAAIC,GAAY,IAAI,IAAIA,EAAS,IAAIE,GAAW,CAC9C,GAAG,IAAI,IAAI,MAAMA,EAAQ,WAAYV,EAAO,IAAI,IAChDU,CACF,CAAC,CAAC,CAAC,EACHE,EAAUC,GAAQC,EAAsB,SAAS,KAAM,OAAO,EAC3D,KACCC,EAAOC,GAAM,CAACA,EAAG,SAAW,CAACA,EAAG,OAAO,EACvCC,GAAeX,CAAQ,EACvBM,EAAU,CAAC,CAACI,EAAIP,CAAO,IAAM,CAC3B,GAAIO,EAAG,kBAAkB,QAAS,CAChC,IAAME,EAAKF,EAAG,OAAO,QAAQ,GAAG,EAChC,GAAIE,GAAM,CAACA,EAAG,QAAUL,EAAK,IAAIK,EAAG,IAAI,EAAG,CACzC,IAAMC,EAAMD,EAAG,KAWf,MAAI,CAACF,EAAG,OAAO,QAAQ,aAAa,GAClBH,EAAK,IAAIM,CAAG,IACZV,EACPJ,GAEXW,EAAG,eAAe,EACXI,EAAGD,CAAG,EACf,CACF,CACA,OAAOd,CACT,CAAC,EACDO,EAAUO,GAAO,CACf,GAAM,CAAE,QAAAT,CAAQ,EAAIG,EAAK,IAAIM,CAAG,EAChC,OAAOE,GAAa,IAAI,IAAIF,CAAG,CAAC,EAC7B,KACCZ,EAAIe,GAAW,CAEb,IAAMC,EADWC,GAAY,EACP,KAAK,QAAQxB,EAAO,KAAM,EAAE,EAClD,OAAOsB,EAAQ,SAASC,EAAK,MAAM,GAAG,EAAE,EAAE,EACtC,IAAI,IAAI,MAAMb,KAAWa,IAAQvB,EAAO,IAAI,EAC5C,IAAI,IAAImB,CAAG,CACjB,CAAC,CACH,CACJ,CAAC,CACH,CACF,CACF,EACG,UAAUA,GAAOM,GAAYN,CAAG,CAAC,EAGtCO,EAAc,CAACxB,EAAWI,CAAQ,CAAC,EAChC,UAAU,CAAC,CAACE,EAAUC,CAAO,IAAM,CACpBkB,EAAW,mBAAmB,EACtC,YAAYC,GAAsBpB,EAAUC,CAAO,CAAC,CAC5D,CAAC,EAGHV,EAAU,KAAKa,EAAU,IAAMN,CAAQ,CAAC,EACrC,UAAUG,GAAW,CA5J1B,IAAAoB,EA+JM,IAAIC,EAAW,SAAS,aAAc,cAAc,EACpD,GAAIA,IAAa,KAAM,CACrB,IAAMC,IAASF,EAAA7B,EAAO,UAAP,YAAA6B,EAAgB,UAAW,SAC1CC,EAAW,CAACrB,EAAQ,QAAQ,SAASsB,CAAM,EAG3C,SAAS,aAAcD,EAAU,cAAc,CACjD,CAGA,GAAIA,EACF,QAAWE,KAAWC,GAAqB,UAAU,EACnDD,EAAQ,OAAS,EACvB,CAAC,CACL,CCtFO,SAASE,GACdC,EAAsB,CAAE,IAAAC,CAAI,EACH,CACzB,IAAMC,GAAK,+BAAU,YAAaC,GAG5B,CAAE,aAAAC,CAAa,EAAIC,GAAY,EACjCD,EAAa,IAAI,GAAG,GACtBE,GAAU,SAAU,EAAI,EAG1B,IAAMC,EAASN,EACZ,KACCO,EAAOC,EAAoB,EAC3BC,GAAK,CAAC,EACNC,EAAI,IAAMP,EAAa,IAAI,GAAG,GAAK,EAAE,CACvC,EAGFQ,GAAY,QAAQ,EACjB,KACCJ,EAAOK,GAAU,CAACA,CAAM,EACxBH,GAAK,CAAC,CACR,EACG,UAAU,IAAM,CACf,IAAMI,EAAM,IAAI,IAAI,SAAS,IAAI,EACjCA,EAAI,aAAa,OAAO,GAAG,EAC3B,QAAQ,aAAa,CAAC,EAAG,GAAI,GAAGA,GAAK,CACvC,CAAC,EAGLP,EAAO,UAAUQ,GAAS,CACpBA,IACFf,EAAG,MAAQe,EACXf,EAAG,MAAM,EAEb,CAAC,EAGD,IAAMgB,EAASC,GAAkBjB,CAAE,EAC7BkB,EAASC,EACbC,EAAUpB,EAAI,OAAO,EACrBoB,EAAUpB,EAAI,OAAO,EAAE,KAAKqB,GAAM,CAAC,CAAC,EACpCd,CACF,EACG,KACCI,EAAI,IAAMT,EAAGF,EAAG,KAAK,CAAC,EACtBsB,EAAU,EAAE,EACZC,EAAqB,CACvB,EAGF,OAAOC,EAAc,CAACN,EAAQF,CAAM,CAAC,EAClC,KACCL,EAAI,CAAC,CAACI,EAAOU,CAAK,KAAO,CAAE,MAAAV,EAAO,MAAAU,CAAM,EAAE,EAC1CC,EAAY,CAAC,CACf,CACJ,CAUO,SAASC,GACd3B,EAAsB,CAAE,IAAA4B,EAAK,IAAA3B,CAAI,EACqB,CACtD,IAAM4B,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EAGpC,OAAAH,EACG,KACCI,EAAwB,OAAO,EAC/BtB,EAAI,CAAC,CAAE,MAAAI,CAAM,KAA2B,CACtC,OACA,KAAMA,CACR,EAAE,CACJ,EACG,UAAUa,EAAI,KAAK,KAAKA,CAAG,CAAC,EAGjCC,EACG,KACCI,EAAwB,OAAO,CACjC,EACG,UAAU,CAAC,CAAE,MAAAR,CAAM,IAAM,CACpBA,GACFnB,GAAU,SAAUmB,CAAK,EACzBzB,EAAG,YAAc,IAEjBA,EAAG,YAAckC,GAAY,oBAAoB,CAErD,CAAC,EAGLd,EAAUpB,EAAG,KAAO,OAAO,EACxB,KACCmC,GAAUJ,CAAK,CACjB,EACG,UAAU,IAAM/B,EAAG,MAAM,CAAC,EAGxBD,GAAiBC,EAAI,CAAE,IAAA4B,EAAK,IAAA3B,CAAI,CAAC,EACrC,KACCmC,EAAIC,GAASR,EAAM,KAAKQ,CAAK,CAAC,EAC9BC,EAAS,IAAMT,EAAM,SAAS,CAAC,EAC/BlB,EAAI0B,GAAUE,EAAA,CAAE,IAAKvC,GAAOqC,EAAQ,EACpCG,GAAM,CACR,CACJ,CCrHO,SAASC,GACdC,EAAiB,CAAE,IAAAC,CAAI,EAAiB,CAAE,OAAAC,CAAO,EACZ,CACrC,IAAMC,EAAQ,IAAIC,EACZC,EAAYC,GAAqBN,EAAG,aAAc,EACrD,KACCO,EAAO,OAAO,CAChB,EAGIC,EAAOC,EAAW,wBAAyBT,CAAE,EAC7CU,EAAOD,EAAW,uBAAwBT,CAAE,EAG5CW,EAASV,EACZ,KACCM,EAAOK,EAAoB,EAC3BC,GAAK,CAAC,CACR,EAGF,OAAAV,EACG,KACCW,GAAeZ,CAAM,EACrBa,GAAUJ,CAAM,CAClB,EACG,UAAU,CAAC,CAAC,CAAE,MAAAK,CAAM,EAAG,CAAE,MAAAC,CAAM,CAAC,IAAM,CACrC,GAAIA,EACF,OAAQD,EAAM,OAAQ,CAGpB,IAAK,GACHR,EAAK,YAAcU,GAAY,oBAAoB,EACnD,MAGF,IAAK,GACHV,EAAK,YAAcU,GAAY,mBAAmB,EAClD,MAGF,QACEV,EAAK,YAAcU,GACjB,sBACAC,GAAMH,EAAM,MAAM,CACpB,CACJ,MAEAR,EAAK,YAAcU,GAAY,2BAA2B,CAE9D,CAAC,EAGLf,EACG,KACCiB,EAAI,IAAMV,EAAK,UAAY,EAAE,EAC7BW,EAAU,CAAC,CAAE,MAAAL,CAAM,IAAMM,EACvBC,EAAG,GAAGP,EAAM,MAAM,EAAG,EAAE,CAAC,EACxBO,EAAG,GAAGP,EAAM,MAAM,EAAE,CAAC,EAClB,KACCQ,GAAY,CAAC,EACbC,GAAQpB,CAAS,EACjBgB,EAAU,CAAC,CAACK,CAAK,IAAMA,CAAK,CAC9B,CACJ,CAAC,CACH,EACG,UAAUC,GAAUjB,EAAK,YACxBkB,GAAuBD,CAAM,CAC/B,CAAC,EAGW1B,EACb,KACCM,EAAOsB,EAAqB,EAC5BC,EAAI,CAAC,CAAE,KAAAC,CAAK,IAAMA,CAAI,CACxB,EAIC,KACCX,EAAIY,GAAS7B,EAAM,KAAK6B,CAAK,CAAC,EAC9BC,EAAS,IAAM9B,EAAM,SAAS,CAAC,EAC/B2B,EAAIE,GAAUE,EAAA,CAAE,IAAKlC,GAAOgC,EAAQ,CACtC,CACJ,CC1FO,SAASG,GACdC,EAAkB,CAAE,OAAAC,CAAO,EACF,CACzB,OAAOA,EACJ,KACCC,EAAI,CAAC,CAAE,MAAAC,CAAM,IAAM,CACjB,IAAMC,EAAMC,GAAY,EACxB,OAAAD,EAAI,KAAO,GACXA,EAAI,aAAa,OAAO,GAAG,EAC3BA,EAAI,aAAa,IAAI,IAAKD,CAAK,EACxB,CAAE,IAAAC,CAAI,CACf,CAAC,CACH,CACJ,CAUO,SAASE,GACdC,EAAuBC,EACa,CACpC,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EAAM,UAAU,CAAC,CAAE,IAAAL,CAAI,IAAM,CAC3BG,EAAG,aAAa,sBAAuBA,EAAG,IAAI,EAC9CA,EAAG,KAAO,GAAGH,GACf,CAAC,EAGDO,EAAUJ,EAAI,OAAO,EAClB,UAAUK,GAAMA,EAAG,eAAe,CAAC,EAG/Bb,GAAiBQ,EAAIC,CAAO,EAChC,KACCK,EAAIC,GAASL,EAAM,KAAKK,CAAK,CAAC,EAC9BC,EAAS,IAAMN,EAAM,SAAS,CAAC,EAC/BP,EAAIY,GAAUE,EAAA,CAAE,IAAKT,GAAOO,EAAQ,CACtC,CACJ,CCtCO,SAASG,GACdC,EAAiB,CAAE,IAAAC,CAAI,EAAiB,CAAE,UAAAC,CAAU,EACd,CACtC,IAAMC,EAAQ,IAAIC,EAGZC,EAASC,GAAoB,cAAc,EAC3CC,EAASC,EACbC,EAAUJ,EAAO,SAAS,EAC1BI,EAAUJ,EAAO,OAAO,CAC1B,EACG,KACCK,GAAUC,EAAc,EACxBC,EAAI,IAAMP,EAAM,KAAK,EACrBQ,EAAqB,CACvB,EAGF,OAAAV,EACG,KACCW,GAAkBP,CAAM,EACxBK,EAAI,CAAC,CAAC,CAAE,YAAAG,CAAY,EAAGC,CAAK,IAAM,CAChC,IAAMC,EAAQD,EAAM,MAAM,UAAU,EACpC,IAAID,GAAA,YAAAA,EAAa,SAAUE,EAAMA,EAAM,OAAS,GAAI,CAClD,IAAMC,EAAOH,EAAYA,EAAY,OAAS,GAC1CG,EAAK,WAAWD,EAAMA,EAAM,OAAS,EAAE,IACzCA,EAAMA,EAAM,OAAS,GAAKC,EAC9B,MACED,EAAM,OAAS,EAEjB,OAAOA,CACT,CAAC,CACH,EACG,UAAUA,GAASjB,EAAG,UAAYiB,EAChC,KAAK,EAAE,EACP,QAAQ,MAAO,QAAQ,CAC1B,EAGJf,EACG,KACCiB,EAAO,CAAC,CAAE,KAAAC,CAAK,IAAMA,IAAS,QAAQ,CACxC,EACG,UAAUC,GAAO,CAChB,OAAQA,EAAI,KAAM,CAGhB,IAAK,aAEDrB,EAAG,UAAU,QACbK,EAAM,iBAAmBA,EAAM,MAAM,SAErCA,EAAM,MAAQL,EAAG,WACnB,KACJ,CACF,CAAC,EAGWC,EACb,KACCkB,EAAOG,EAAqB,EAC5BV,EAAI,CAAC,CAAE,KAAAW,CAAK,IAAMA,CAAI,CACxB,EAIC,KACCC,EAAIC,GAAStB,EAAM,KAAKsB,CAAK,CAAC,EAC9BC,EAAS,IAAMvB,EAAM,SAAS,CAAC,EAC/BS,EAAI,KAAO,CAAE,IAAKZ,CAAG,EAAE,CACzB,CACJ,CC9CO,SAAS2B,GACdC,EAAiB,CAAE,OAAAC,EAAQ,UAAAC,CAAU,EACN,CAC/B,IAAMC,EAASC,GAAc,EAC7B,GAAI,CACF,IAAMC,GAAM,+BAAU,SAAUF,EAAO,OACjCG,EAASC,GAAkBF,EAAKJ,CAAM,EAGtCO,EAASC,GAAoB,eAAgBT,CAAE,EAC/CU,EAASD,GAAoB,gBAAiBT,CAAE,EAGhD,CAAE,IAAAW,EAAK,IAAAC,CAAI,EAAIN,EACrBK,EACG,KACCE,EAAOC,EAAoB,EAC3BC,GAAOH,EAAI,KAAKC,EAAOG,EAAoB,CAAC,CAAC,EAC7CC,GAAK,CAAC,CACR,EACG,UAAUN,EAAI,KAAK,KAAKA,CAAG,CAAC,EAGjCT,EACG,KACCW,EAAO,CAAC,CAAE,KAAAK,CAAK,IAAMA,IAAS,QAAQ,CACxC,EACG,UAAUC,GAAO,CAChB,IAAMC,EAASC,GAAiB,EAChC,OAAQF,EAAI,KAAM,CAGhB,IAAK,QACH,GAAIC,IAAWZ,EAAO,CACpB,IAAMc,EAAU,IAAI,IACpB,QAAWC,KAAUC,EACnB,sBAAuBd,CACzB,EAAG,CACD,IAAMe,EAAUF,EAAO,kBACvBD,EAAQ,IAAIC,EAAQ,WAClBE,EAAQ,aAAa,eAAe,CACtC,CAAC,CACH,CAGA,GAAIH,EAAQ,KAAM,CAChB,GAAM,CAAC,CAACI,CAAI,CAAC,EAAI,CAAC,GAAGJ,CAAO,EAAE,KAAK,CAAC,CAAC,CAAEK,CAAC,EAAG,CAAC,CAAEC,CAAC,IAAMA,EAAID,CAAC,EAC1DD,EAAK,MAAM,CACb,CAGAP,EAAI,MAAM,CACZ,CACA,MAGF,IAAK,SACL,IAAK,MACHU,GAAU,SAAU,EAAK,EACzBrB,EAAM,KAAK,EACX,MAGF,IAAK,UACL,IAAK,YACH,GAAI,OAAOY,GAAW,YACpBZ,EAAM,MAAM,MACP,CACL,IAAMsB,EAAM,CAACtB,EAAO,GAAGgB,EACrB,wDACAd,CACF,CAAC,EACKqB,EAAI,KAAK,IAAI,GACjB,KAAK,IAAI,EAAGD,EAAI,QAAQV,CAAM,CAAC,EAAIU,EAAI,QACrCX,EAAI,OAAS,UAAY,GAAK,IAE9BW,EAAI,MAAM,EACdA,EAAIC,GAAG,MAAM,CACf,CAGAZ,EAAI,MAAM,EACV,MAGF,QACMX,IAAUa,GAAiB,GAC7Bb,EAAM,MAAM,CAClB,CACF,CAAC,EAGLN,EACG,KACCW,EAAO,CAAC,CAAE,KAAAK,CAAK,IAAMA,IAAS,QAAQ,CACxC,EACG,UAAUC,GAAO,CAChB,OAAQA,EAAI,KAAM,CAGhB,IAAK,IACL,IAAK,IACL,IAAK,IACHX,EAAM,MAAM,EACZA,EAAM,OAAO,EAGbW,EAAI,MAAM,EACV,KACJ,CACF,CAAC,EAGL,IAAMa,EAAUC,GAAiBzB,EAAOF,CAAM,EACxC4B,EAAUC,GAAkBzB,EAAQJ,EAAQ,CAAE,OAAA0B,CAAO,CAAC,EAC5D,OAAOI,EAAMJ,EAAQE,CAAO,EACzB,KACCG,GAGE,GAAGC,GAAqB,eAAgBtC,CAAE,EACvC,IAAIuC,GAASC,GAAiBD,EAAO,CAAE,OAAAP,CAAO,CAAC,CAAC,EAGnD,GAAGM,GAAqB,iBAAkBtC,CAAE,EACzC,IAAIuC,GAASE,GAAmBF,EAAOjC,EAAQ,CAAE,UAAAJ,CAAU,CAAC,CAAC,CAClE,CACF,CAGJ,OAASwC,EAAP,CACA,OAAA1C,EAAG,OAAS,GACL2C,EACT,CACF,CCtKO,SAASC,GACdC,EAAiB,CAAE,OAAAC,EAAQ,UAAAC,CAAU,EACG,CACxC,OAAOC,EAAc,CACnBF,EACAC,EACG,KACCE,EAAUC,GAAY,CAAC,EACvBC,EAAOC,GAAO,CAAC,CAACA,EAAI,aAAa,IAAI,GAAG,CAAC,CAC3C,CACJ,CAAC,EACE,KACCC,EAAI,CAAC,CAACC,EAAOF,CAAG,IAAMG,GAAuBD,EAAM,OAAQ,EAAI,EAC7DF,EAAI,aAAa,IAAI,GAAG,CAC1B,CAAC,EACDC,EAAIG,GAAM,CA1FhB,IAAAC,EA2FQ,IAAMC,EAAQ,IAAI,IAGZC,EAAK,SAAS,mBAAmBd,EAAI,WAAW,SAAS,EAC/D,QAASe,EAAOD,EAAG,SAAS,EAAGC,EAAMA,EAAOD,EAAG,SAAS,EACtD,IAAIF,EAAAG,EAAK,gBAAL,MAAAH,EAAoB,aAAc,CACpC,IAAMI,EAAWD,EAAK,YAChBE,EAAWN,EAAGK,CAAQ,EACxBC,EAAS,OAASD,EAAS,QAC7BH,EAAM,IAAIE,EAAmBE,CAAQ,CACzC,CAIF,OAAW,CAACF,EAAMG,CAAI,IAAKL,EAAO,CAChC,GAAM,CAAE,WAAAM,CAAW,EAAIC,EAAE,OAAQ,KAAMF,CAAI,EAC3CH,EAAK,YAAY,GAAG,MAAM,KAAKI,CAAU,CAAC,CAC5C,CAGA,MAAO,CAAE,IAAKnB,EAAI,MAAAa,CAAM,CAC1B,CAAC,CACH,CACJ,CCbO,SAASQ,GACdC,EAAiB,CAAE,UAAAC,EAAW,MAAAC,CAAM,EACf,CACrB,IAAMC,EAASH,EAAG,cACZI,EACJD,EAAO,UACPA,EAAO,cAAe,UAGxB,OAAOE,EAAc,CAACH,EAAOD,CAAS,CAAC,EACpC,KACCK,EAAI,CAAC,CAAC,CAAE,OAAAC,EAAQ,OAAAC,CAAO,EAAG,CAAE,OAAQ,CAAE,EAAAC,CAAE,CAAE,CAAC,KACzCD,EAASA,EACL,KAAK,IAAIJ,EAAQ,KAAK,IAAI,EAAGK,EAAIF,CAAM,CAAC,EACxCH,EACG,CACL,OAAAI,EACA,OAAQC,GAAKF,EAASH,CACxB,EACD,EACDM,EAAqB,CAACC,EAAGC,IACvBD,EAAE,SAAWC,EAAE,QACfD,EAAE,SAAWC,EAAE,MAChB,CACH,CACJ,CAuBO,SAASC,GACdb,EAAiBc,EACe,CADf,IAAAC,EAAAD,EAAE,SAAAE,CAtJrB,EAsJmBD,EAAcE,EAAAC,GAAdH,EAAc,CAAZ,YAEnB,IAAMI,EAAQC,EAAW,0BAA2BpB,CAAE,EAChD,CAAE,EAAAS,CAAE,EAAIY,GAAiBF,CAAK,EACpC,OAAOG,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EACG,KACCE,GAAU,EAAGC,EAAuB,EACpCC,GAAeX,CAAO,CACxB,EACG,UAAU,CAGT,KAAK,CAAC,CAAE,OAAAR,CAAO,EAAG,CAAE,OAAQD,CAAO,CAAC,EAAG,CACrCY,EAAM,MAAM,OAAS,GAAGX,EAAS,EAAIC,MACrCT,EAAG,MAAM,IAAY,GAAGO,KAC1B,EAGA,UAAW,CACTY,EAAM,MAAM,OAAS,GACrBnB,EAAG,MAAM,IAAY,EACvB,CACF,CAAC,EAGLuB,EACG,KACCK,GAAUF,EAAuB,EACjCG,GAAK,CAAC,CACR,EACG,UAAU,IAAM,CACf,QAAWC,KAAQC,EAAY,8BAA+B/B,CAAE,EAAG,CACjE,IAAMgC,EAAYC,GAAoBH,CAAI,EAC1C,GAAI,OAAOE,GAAc,YAAa,CACpC,IAAMzB,EAASuB,EAAK,UAAYE,EAAU,UACpC,CAAE,OAAAxB,CAAO,EAAI0B,GAAeF,CAAS,EAC3CA,EAAU,SAAS,CACjB,IAAKzB,EAASC,EAAS,CACzB,CAAC,CACH,CACF,CACF,CAAC,EAGET,GAAaC,EAAIiB,CAAO,EAC5B,KACCkB,EAAIC,GAASb,EAAM,KAAKa,CAAK,CAAC,EAC9BC,EAAS,IAAMd,EAAM,SAAS,CAAC,EAC/BjB,EAAI8B,GAAUE,EAAA,CAAE,IAAKtC,GAAOoC,EAAQ,CACtC,CACJ,CAAC,CACH,CChJO,SAASG,GACdC,EAAcC,EACW,CACzB,GAAI,OAAOA,GAAS,YAAa,CAC/B,IAAMC,EAAM,gCAAgCF,KAAQC,IACpD,OAAOE,GAGLC,GAAqB,GAAGF,mBAAqB,EAC1C,KACCG,GAAW,IAAMC,CAAK,EACtBC,EAAIC,IAAY,CACd,QAASA,EAAQ,QACnB,EAAE,EACFC,GAAe,CAAC,CAAC,CACnB,EAGFL,GAAkBF,CAAG,EAClB,KACCG,GAAW,IAAMC,CAAK,EACtBC,EAAIG,IAAS,CACX,MAAOA,EAAK,iBACZ,MAAOA,EAAK,WACd,EAAE,EACFD,GAAe,CAAC,CAAC,CACnB,CACJ,EACG,KACCF,EAAI,CAAC,CAACC,EAASE,CAAI,IAAOC,IAAA,GAAKH,GAAYE,EAAO,CACpD,CAGJ,KAAO,CACL,IAAMR,EAAM,gCAAgCF,IAC5C,OAAOI,GAAkBF,CAAG,EACzB,KACCK,EAAIG,IAAS,CACX,aAAcA,EAAK,YACrB,EAAE,EACFD,GAAe,CAAC,CAAC,CACnB,CACJ,CACF,CCvDO,SAASG,GACdC,EAAcC,EACW,CACzB,IAAMC,EAAM,WAAWF,qBAAwB,mBAAmBC,CAAO,IACzE,OAAOE,GAA2BD,CAAG,EAClC,KACCE,GAAW,IAAMC,CAAK,EACtBC,EAAI,CAAC,CAAE,WAAAC,EAAY,YAAAC,CAAY,KAAO,CACpC,MAAOD,EACP,MAAOC,CACT,EAAE,EACFC,GAAe,CAAC,CAAC,CACnB,CACJ,CCOO,SAASC,GACdC,EACyB,CAGzB,IAAIC,EAAQD,EAAI,MAAM,qCAAqC,EAC3D,GAAIC,EAAO,CACT,GAAM,CAAC,CAAEC,EAAMC,CAAI,EAAIF,EACvB,OAAOG,GAA2BF,EAAMC,CAAI,CAC9C,CAIA,GADAF,EAAQD,EAAI,MAAM,oCAAoC,EAClDC,EAAO,CACT,GAAM,CAAC,CAAEI,EAAMC,CAAI,EAAIL,EACvB,OAAOM,GAA2BF,EAAMC,CAAI,CAC9C,CAGA,OAAOE,CACT,CCpBA,IAAIC,GAgBG,SAASC,GACdC,EACoB,CACpB,OAAOF,QAAWG,EAAM,IAAM,CAC5B,IAAMC,EAAS,SAAsB,WAAY,cAAc,EAC/D,GAAIA,EACF,OAAOC,EAAGD,CAAM,EAKhB,GADYE,GAAqB,SAAS,EAClC,OAAQ,CACd,IAAMC,EAAU,SAA0B,WAAW,EACrD,GAAI,EAAEA,GAAWA,EAAQ,QACvB,OAAOC,CACX,CAGA,OAAOC,GAAiBP,EAAG,IAAI,EAC5B,KACCQ,EAAIC,GAAS,SAAS,WAAYA,EAAO,cAAc,CAAC,CAC1D,CAEN,CAAC,EACE,KACCC,GAAW,IAAMJ,CAAK,EACtBK,EAAOF,GAAS,OAAO,KAAKA,CAAK,EAAE,OAAS,CAAC,EAC7CG,EAAIH,IAAU,CAAE,MAAAA,CAAM,EAAE,EACxBI,EAAY,CAAC,CACf,EACJ,CASO,SAASC,GACdd,EAC+B,CAC/B,IAAMe,EAAQC,EAAW,uBAAwBhB,CAAE,EACnD,OAAOC,EAAM,IAAM,CACjB,IAAMgB,EAAQ,IAAIC,EAClB,OAAAD,EAAM,UAAU,CAAC,CAAE,MAAAR,CAAM,IAAM,CAC7BM,EAAM,YAAYI,GAAkBV,CAAK,CAAC,EAC1CM,EAAM,UAAU,IAAI,+BAA+B,CACrD,CAAC,EAGMhB,GAAYC,CAAE,EAClB,KACCQ,EAAIY,GAASH,EAAM,KAAKG,CAAK,CAAC,EAC9BC,EAAS,IAAMJ,EAAM,SAAS,CAAC,EAC/BL,EAAIQ,GAAUE,EAAA,CAAE,IAAKtB,GAAOoB,EAAQ,CACtC,CACJ,CAAC,CACH,CCtDO,SAASG,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACpB,CAClB,OAAOC,GAAiB,SAAS,IAAI,EAClC,KACCC,EAAU,IAAMC,GAAgBL,EAAI,CAAE,QAAAE,EAAS,UAAAD,CAAU,CAAC,CAAC,EAC3DK,EAAI,CAAC,CAAE,OAAQ,CAAE,EAAAC,CAAE,CAAE,KACZ,CACL,OAAQA,GAAK,EACf,EACD,EACDC,EAAwB,QAAQ,CAClC,CACJ,CAaO,SAASC,GACdT,EAAiBU,EACY,CAC7B,OAAOC,EAAM,IAAM,CACjB,IAAMC,EAAQ,IAAIC,EAClB,OAAAD,EAAM,UAAU,CAGd,KAAK,CAAE,OAAAE,CAAO,EAAG,CACfd,EAAG,OAASc,CACd,EAGA,UAAW,CACTd,EAAG,OAAS,EACd,CACF,CAAC,GAICe,EAAQ,wBAAwB,EAC5BC,EAAG,CAAE,OAAQ,EAAM,CAAC,EACpBjB,GAAUC,EAAIU,CAAO,GAExB,KACCO,EAAIC,GAASN,EAAM,KAAKM,CAAK,CAAC,EAC9BC,EAAS,IAAMP,EAAM,SAAS,CAAC,EAC/BN,EAAIY,GAAUE,EAAA,CAAE,IAAKpB,GAAOkB,EAAQ,CACtC,CACJ,CAAC,CACH,CCpBO,SAASG,GACdC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACT,CAC7B,IAAMC,EAAQ,IAAI,IAGZC,EAAUC,EAA+B,cAAeL,CAAE,EAChE,QAAWM,KAAUF,EAAS,CAC5B,IAAMG,EAAK,mBAAmBD,EAAO,KAAK,UAAU,CAAC,CAAC,EAChDE,EAASC,GAAmB,QAAQF,KAAM,EAC5C,OAAOC,GAAW,aACpBL,EAAM,IAAIG,EAAQE,CAAM,CAC5B,CAGA,IAAME,EAAUR,EACb,KACCS,EAAwB,QAAQ,EAChCC,EAAI,CAAC,CAAE,OAAAC,CAAO,IAAM,CAClB,IAAMC,EAAOC,GAAoB,MAAM,EACjCC,EAAOC,EAAW,wBAAyBH,CAAI,EACrD,OAAOD,EAAS,IACdG,EAAK,UACLF,EAAK,UAET,CAAC,EACDI,GAAM,CACR,EAgFF,OA7EmBC,GAAiB,SAAS,IAAI,EAC9C,KACCR,EAAwB,QAAQ,EAGhCS,EAAUC,GAAQC,EAAM,IAAM,CAC5B,IAAIC,EAA4B,CAAC,EACjC,OAAOC,EAAG,CAAC,GAAGrB,CAAK,EAAE,OAAO,CAACsB,EAAO,CAACnB,EAAQE,CAAM,IAAM,CACvD,KAAOe,EAAK,QACGpB,EAAM,IAAIoB,EAAKA,EAAK,OAAS,EAAE,EACnC,SAAWf,EAAO,SACzBe,EAAK,IAAI,EAOb,IAAIG,EAASlB,EAAO,UACpB,KAAO,CAACkB,GAAUlB,EAAO,eACvBA,EAASA,EAAO,cAChBkB,EAASlB,EAAO,UAIlB,OAAOiB,EAAM,IACX,CAAC,GAAGF,EAAO,CAAC,GAAGA,EAAMjB,CAAM,CAAC,EAAE,QAAQ,EACtCoB,CACF,CACF,EAAG,IAAI,GAAkC,CAAC,CAC5C,CAAC,EACE,KAGCd,EAAIa,GAAS,IAAI,IAAI,CAAC,GAAGA,CAAK,EAAE,KAAK,CAAC,CAAC,CAAEE,CAAC,EAAG,CAAC,CAAEC,CAAC,IAAMD,EAAIC,CAAC,CAAC,CAAC,EAC9DC,GAAkBnB,CAAO,EAGzBU,EAAU,CAAC,CAACK,EAAOK,CAAM,IAAM7B,EAC5B,KACC8B,GAAK,CAAC,CAACC,EAAMC,CAAI,EAAG,CAAE,OAAQ,CAAE,EAAAC,CAAE,EAAG,KAAAC,CAAK,IAAM,CAC9C,IAAMC,EAAOF,EAAIC,EAAK,QAAU,KAAK,MAAMd,EAAK,MAAM,EAGtD,KAAOY,EAAK,QAAQ,CAClB,GAAM,CAAC,CAAEP,CAAM,EAAIO,EAAK,GACxB,GAAIP,EAASI,EAASI,GAAKE,EACzBJ,EAAO,CAAC,GAAGA,EAAMC,EAAK,MAAM,CAAE,MAE9B,MAEJ,CAGA,KAAOD,EAAK,QAAQ,CAClB,GAAM,CAAC,CAAEN,CAAM,EAAIM,EAAKA,EAAK,OAAS,GACtC,GAAIN,EAASI,GAAUI,GAAK,CAACE,EAC3BH,EAAO,CAACD,EAAK,IAAI,EAAI,GAAGC,CAAI,MAE5B,MAEJ,CAGA,MAAO,CAACD,EAAMC,CAAI,CACpB,EAAG,CAAC,CAAC,EAAG,CAAC,GAAGR,CAAK,CAAC,CAAC,EACnBY,EAAqB,CAACV,EAAGC,IACvBD,EAAE,KAAOC,EAAE,IACXD,EAAE,KAAOC,EAAE,EACZ,CACH,CACF,CACF,CACF,CACF,EAIC,KACChB,EAAI,CAAC,CAACoB,EAAMC,CAAI,KAAO,CACrB,KAAMD,EAAK,IAAI,CAAC,CAACT,CAAI,IAAMA,CAAI,EAC/B,KAAMU,EAAK,IAAI,CAAC,CAACV,CAAI,IAAMA,CAAI,CACjC,EAAE,EAGFe,EAAU,CAAE,KAAM,CAAC,EAAG,KAAM,CAAC,CAAE,CAAC,EAChCC,GAAY,EAAG,CAAC,EAChB3B,EAAI,CAAC,CAAC,EAAGgB,CAAC,IAGJ,EAAE,KAAK,OAASA,EAAE,KAAK,OAClB,CACL,KAAMA,EAAE,KAAK,MAAM,KAAK,IAAI,EAAG,EAAE,KAAK,OAAS,CAAC,EAAGA,EAAE,KAAK,MAAM,EAChE,KAAM,CAAC,CACT,EAIO,CACL,KAAMA,EAAE,KAAK,MAAM,EAAE,EACrB,KAAMA,EAAE,KAAK,MAAM,EAAGA,EAAE,KAAK,OAAS,EAAE,KAAK,MAAM,CACrD,CAEH,CACH,CACJ,CAYO,SAASY,GACdxC,EAAiB,CAAE,UAAAC,EAAW,QAAAC,EAAS,QAAAuC,CAAQ,EACP,CACxC,OAAOnB,EAAM,IAAM,CACjB,IAAMoB,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EAoBpC,GAnBAH,EAAM,UAAU,CAAC,CAAE,KAAAV,EAAM,KAAAC,CAAK,IAAM,CAGlC,OAAW,CAAC3B,CAAM,IAAK2B,EACrB3B,EAAO,UAAU,OAAO,sBAAsB,EAC9CA,EAAO,UAAU,OAAO,sBAAsB,EAIhD,OAAW,CAACmB,EAAO,CAACnB,CAAM,CAAC,IAAK0B,EAAK,QAAQ,EAC3C1B,EAAO,UAAU,IAAI,sBAAsB,EAC3CA,EAAO,UAAU,OACf,uBACAmB,IAAUO,EAAK,OAAS,CAC1B,CAEJ,CAAC,EAGGc,EAAQ,YAAY,EAAG,CAGzB,IAAMC,EAAUC,EACd/C,EAAU,KAAKgD,GAAa,CAAC,EAAGrC,EAAI,IAAG,EAAY,CAAC,EACpDX,EAAU,KAAKgD,GAAa,GAAG,EAAGrC,EAAI,IAAM,QAAiB,CAAC,CAChE,EAGA8B,EACG,KACCQ,EAAO,CAAC,CAAE,KAAAlB,CAAK,IAAMA,EAAK,OAAS,CAAC,EACpCmB,GAAeJ,CAAO,CACxB,EACG,UAAU,CAAC,CAAC,CAAE,KAAAf,CAAK,EAAGoB,CAAQ,IAAM,CACnC,GAAM,CAAC9C,CAAM,EAAI0B,EAAKA,EAAK,OAAS,GACpC,GAAI1B,EAAO,aAAc,CAGvB,IAAM+C,EAAYC,GAAoBhD,CAAM,EAC5C,GAAI,OAAO+C,GAAc,YAAa,CACpC,IAAM3B,EAASpB,EAAO,UAAY+C,EAAU,UACtC,CAAE,OAAAxC,CAAO,EAAI0C,GAAeF,CAAS,EAC3CA,EAAU,SAAS,CACjB,IAAK3B,EAASb,EAAS,EACvB,SAAAuC,CACF,CAAC,CACH,CACF,CACF,CAAC,CACP,CAGA,OAAIN,EAAQ,qBAAqB,GAC/B7C,EACG,KACCuD,GAAUZ,CAAK,EACfjC,EAAwB,QAAQ,EAChCsC,GAAa,GAAG,EAChBQ,GAAK,CAAC,EACND,GAAUf,EAAQ,KAAKgB,GAAK,CAAC,CAAC,CAAC,EAC/BC,GAAO,CAAE,MAAO,GAAI,CAAC,EACrBP,GAAeT,CAAK,CACtB,EACG,UAAU,CAAC,CAAC,CAAE,CAAE,KAAAV,CAAK,CAAC,IAAM,CAC3B,IAAM2B,EAAMC,GAAY,EAGlBtD,EAAS0B,EAAKA,EAAK,OAAS,GAClC,GAAI1B,GAAUA,EAAO,OAAQ,CAC3B,GAAM,CAACuD,CAAM,EAAIvD,EACX,CAAE,KAAAwD,CAAK,EAAI,IAAI,IAAID,EAAO,IAAI,EAChCF,EAAI,OAASG,IACfH,EAAI,KAAOG,EACX,QAAQ,aAAa,CAAC,EAAG,GAAI,GAAGH,GAAK,EAIzC,MACEA,EAAI,KAAO,GACX,QAAQ,aAAa,CAAC,EAAG,GAAI,GAAGA,GAAK,CAEzC,CAAC,EAGA5D,GAAqBC,EAAI,CAAE,UAAAC,EAAW,QAAAC,CAAQ,CAAC,EACnD,KACC6D,EAAIC,GAAStB,EAAM,KAAKsB,CAAK,CAAC,EAC9BC,EAAS,IAAMvB,EAAM,SAAS,CAAC,EAC/B9B,EAAIoD,GAAUE,EAAA,CAAE,IAAKlE,GAAOgE,EAAQ,CACtC,CACJ,CAAC,CACH,CCpRO,SAASG,GACdC,EAAkB,CAAE,UAAAC,EAAW,MAAAC,EAAO,QAAAC,CAAQ,EACvB,CAGvB,IAAMC,EAAaH,EAChB,KACCI,EAAI,CAAC,CAAE,OAAQ,CAAE,EAAAC,CAAE,CAAE,IAAMA,CAAC,EAC5BC,GAAY,EAAG,CAAC,EAChBF,EAAI,CAAC,CAACG,EAAGC,CAAC,IAAMD,EAAIC,GAAKA,EAAI,CAAC,EAC9BC,EAAqB,CACvB,EAGIC,EAAUT,EACb,KACCG,EAAI,CAAC,CAAE,OAAAO,CAAO,IAAMA,CAAM,CAC5B,EAGF,OAAOC,EAAc,CAACF,EAASP,CAAU,CAAC,EACvC,KACCC,EAAI,CAAC,CAACO,EAAQE,CAAS,IAAM,EAAEF,GAAUE,EAAU,EACnDJ,EAAqB,EACrBK,GAAUZ,EAAQ,KAAKa,GAAK,CAAC,CAAC,CAAC,EAC/BC,GAAQ,EAAI,EACZC,GAAO,CAAE,MAAO,GAAI,CAAC,EACrBb,EAAIc,IAAW,CAAE,OAAAA,CAAO,EAAE,CAC5B,CACJ,CAYO,SAASC,GACdC,EAAiB,CAAE,UAAApB,EAAW,QAAAqB,EAAS,MAAApB,EAAO,QAAAC,CAAQ,EACpB,CAClC,IAAMoB,EAAQ,IAAIC,EACZC,EAAQF,EAAM,KAAKG,GAAS,CAAC,CAAC,EACpC,OAAAH,EAAM,UAAU,CAGd,KAAK,CAAE,OAAAJ,CAAO,EAAG,CACfE,EAAG,OAASF,EACRA,GACFE,EAAG,aAAa,WAAY,IAAI,EAChCA,EAAG,KAAK,GAERA,EAAG,gBAAgB,UAAU,CAEjC,EAGA,UAAW,CACTA,EAAG,MAAM,IAAM,GACfA,EAAG,OAAS,GACZA,EAAG,gBAAgB,UAAU,CAC/B,CACF,CAAC,EAGDC,EACG,KACCP,GAAUU,CAAK,EACfE,EAAwB,QAAQ,CAClC,EACG,UAAU,CAAC,CAAE,OAAAC,CAAO,IAAM,CACzBP,EAAG,MAAM,IAAM,GAAGO,EAAS,MAC7B,CAAC,EAGE7B,GAAesB,EAAI,CAAE,UAAApB,EAAW,MAAAC,EAAO,QAAAC,CAAQ,CAAC,EACpD,KACC0B,EAAIC,GAASP,EAAM,KAAKO,CAAK,CAAC,EAC9BC,EAAS,IAAMR,EAAM,SAAS,CAAC,EAC/BlB,EAAIyB,GAAUE,EAAA,CAAE,IAAKX,GAAOS,EAAQ,CACtC,CACJ,CCpHO,SAASG,GACd,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACf,CACND,EACG,KACCE,EAAU,IAAMC,EAEd,0DACF,CAAC,EACDC,EAAIC,GAAM,CACRA,EAAG,cAAgB,GACnBA,EAAG,QAAU,EACf,CAAC,EACDC,GAASD,GAAME,EAAUF,EAAI,QAAQ,EAClC,KACCG,GAAU,IAAMH,EAAG,UAAU,SAAS,0BAA0B,CAAC,EACjEI,EAAI,IAAMJ,CAAE,CACd,CACF,EACAK,GAAeT,CAAO,CACxB,EACG,UAAU,CAAC,CAACI,EAAIM,CAAM,IAAM,CAC3BN,EAAG,UAAU,OAAO,0BAA0B,EAC1CM,IACFN,EAAG,QAAU,GACjB,CAAC,CACP,CC/BA,SAASO,IAAyB,CAChC,MAAO,qBAAqB,KAAK,UAAU,SAAS,CACtD,CAiBO,SAASC,GACd,CAAE,UAAAC,CAAU,EACN,CACNA,EACG,KACCC,EAAU,IAAMC,EAAY,qBAAqB,CAAC,EAClDC,EAAIC,GAAMA,EAAG,gBAAgB,mBAAmB,CAAC,EACjDC,EAAOP,EAAa,EACpBQ,GAASF,GAAMG,EAAUH,EAAI,YAAY,EACtC,KACCI,EAAI,IAAMJ,CAAE,CACd,CACF,CACF,EACG,UAAUA,GAAM,CACf,IAAMK,EAAML,EAAG,UAGXK,IAAQ,EACVL,EAAG,UAAY,EAGNK,EAAML,EAAG,eAAiBA,EAAG,eACtCA,EAAG,UAAYK,EAAM,EAEzB,CAAC,CACP,CCpCO,SAASC,GACd,CAAE,UAAAC,EAAW,QAAAC,CAAQ,EACf,CACNC,EAAc,CAACC,GAAY,QAAQ,EAAGF,CAAO,CAAC,EAC3C,KACCG,EAAI,CAAC,CAACC,EAAQC,CAAM,IAAMD,GAAU,CAACC,CAAM,EAC3CC,EAAUF,GAAUG,EAAGH,CAAM,EAC1B,KACCI,GAAMJ,EAAS,IAAM,GAAG,CAC1B,CACF,EACAK,GAAeV,CAAS,CAC1B,EACG,UAAU,CAAC,CAACK,EAAQ,CAAE,OAAQ,CAAE,EAAAM,CAAE,CAAC,CAAC,IAAM,CACzC,GAAIN,EACF,SAAS,KAAK,aAAa,qBAAsB,EAAE,EACnD,SAAS,KAAK,MAAM,IAAM,IAAIM,UACzB,CACL,IAAMC,EAAQ,GAAK,SAAS,SAAS,KAAK,MAAM,IAAK,EAAE,EACvD,SAAS,KAAK,gBAAgB,oBAAoB,EAClD,SAAS,KAAK,MAAM,IAAM,GACtBA,GACF,OAAO,SAAS,EAAGA,CAAK,CAC5B,CACF,CAAC,CACP,CC7DK,OAAO,UACV,OAAO,QAAU,SAAUC,EAAa,CACtC,IAAMC,EAA2B,CAAC,EAClC,QAAWC,KAAO,OAAO,KAAKF,CAAG,EAE/BC,EAAK,KAAK,CAACC,EAAKF,EAAIE,EAAI,CAAC,EAG3B,OAAOD,CACT,GAGG,OAAO,SACV,OAAO,OAAS,SAAUD,EAAa,CACrC,IAAMC,EAAiB,CAAC,EACxB,QAAWC,KAAO,OAAO,KAAKF,CAAG,EAE/BC,EAAK,KAAKD,EAAIE,EAAI,EAGpB,OAAOD,CACT,GAKE,OAAO,SAAY,cAGhB,QAAQ,UAAU,WACrB,QAAQ,UAAU,SAAW,SAC3BE,EAA8BC,EACxB,CACF,OAAOD,GAAM,UACf,KAAK,WAAaA,EAAE,KACpB,KAAK,UAAYA,EAAE,MAEnB,KAAK,WAAaA,EAClB,KAAK,UAAYC,EAErB,GAGG,QAAQ,UAAU,cACrB,QAAQ,UAAU,YAAc,YAC3BC,EACG,CACN,IAAMC,EAAS,KAAK,WACpB,GAAIA,EAAQ,CACND,EAAM,SAAW,GACnBC,EAAO,YAAY,IAAI,EAGzB,QAASC,EAAIF,EAAM,OAAS,EAAGE,GAAK,EAAGA,IAAK,CAC1C,IAAIC,EAAOH,EAAME,GACb,OAAOC,GAAS,SAClBA,EAAO,SAAS,eAAeA,CAAI,EAC5BA,EAAK,YACZA,EAAK,WAAW,YAAYA,CAAI,EAG7BD,EAGHD,EAAO,aAAa,KAAK,gBAAkBE,CAAI,EAF/CF,EAAO,aAAaE,EAAM,IAAI,CAGlC,CACF,CACF,IjMDJ,SAAS,gBAAgB,UAAU,OAAO,OAAO,EACjD,SAAS,gBAAgB,UAAU,IAAI,IAAI,EAG3C,IAAMC,GAAYC,GAAc,EAC1BC,GAAYC,GAAc,EAC1BC,GAAYC,GAAoB,EAChCC,GAAYC,GAAc,EAG1BC,GAAYC,GAAc,EAC1BC,GAAYC,GAAW,oBAAoB,EAC3CC,GAAYD,GAAW,qBAAqB,EAC5CE,GAAYC,GAAW,EAGvBC,GAASC,GAAc,EACvBC,GAAS,SAAS,MAAM,UAAU,QAAQ,GAC5C,+BAAU,QAASC,GACnB,IAAI,IAAI,2BAA4BH,GAAO,IAAI,CACjD,EACEI,GAGEC,GAAS,IAAIC,EACnBC,GAAiB,CAAE,OAAAF,EAAO,CAAC,EAGvBG,EAAQ,oBAAoB,GAC9BC,GAAoB,CAAE,UAAAxB,GAAW,UAAAE,GAAW,UAAAM,EAAU,CAAC,EA1HzD,IAAAiB,KA6HIA,GAAAV,GAAO,UAAP,YAAAU,GAAgB,YAAa,QAC/BC,GAAqB,CAAE,UAAA1B,EAAU,CAAC,EAGpC2B,EAAMzB,GAAWE,EAAO,EACrB,KACCwB,GAAM,GAAG,CACX,EACG,UAAU,IAAM,CACfC,GAAU,SAAU,EAAK,EACzBA,GAAU,SAAU,EAAK,CAC3B,CAAC,EAGLvB,GACG,KACCwB,EAAO,CAAC,CAAE,KAAAC,CAAK,IAAMA,IAAS,QAAQ,CACxC,EACG,UAAUC,GAAO,CAChB,OAAQA,EAAI,KAAM,CAGhB,IAAK,IACL,IAAK,IACH,IAAMC,EAAOC,GAAmB,kBAAkB,EAC9C,OAAOD,GAAS,aAClBA,EAAK,MAAM,EACb,MAGF,IAAK,IACL,IAAK,IACH,IAAME,EAAOD,GAAmB,kBAAkB,EAC9C,OAAOC,GAAS,aAClBA,EAAK,MAAM,EACb,KACJ,CACF,CAAC,EAGLC,GAAmB,CAAE,UAAApC,GAAW,QAAAU,EAAQ,CAAC,EACzC2B,GAAe,CAAE,UAAArC,EAAU,CAAC,EAC5BsC,GAAgB,CAAE,UAAA9B,GAAW,QAAAE,EAAQ,CAAC,EAGtC,IAAM6B,GAAUC,GAAYC,GAAoB,QAAQ,EAAG,CAAE,UAAAjC,EAAU,CAAC,EAClEkC,GAAQ1C,GACX,KACC2C,EAAI,IAAMF,GAAoB,MAAM,CAAC,EACrCG,EAAUC,GAAMC,GAAUD,EAAI,CAAE,UAAArC,GAAW,QAAA+B,EAAQ,CAAC,CAAC,EACrDQ,EAAY,CAAC,CACf,EAGIC,GAAWrB,EAGf,GAAGsB,GAAqB,SAAS,EAC9B,IAAIJ,GAAMK,GAAaL,EAAI,CAAE,QAAAzC,EAAQ,CAAC,CAAC,EAG1C,GAAG6C,GAAqB,QAAQ,EAC7B,IAAIJ,GAAMM,GAAYN,EAAI,CAAE,OAAAzB,EAAO,CAAC,CAAC,EAGxC,GAAG6B,GAAqB,QAAQ,EAC7B,IAAIJ,GAAMO,GAAYP,EAAI,CAAE,UAAArC,GAAW,QAAA+B,GAAS,MAAAG,EAAM,CAAC,CAAC,EAG3D,GAAGO,GAAqB,SAAS,EAC9B,IAAIJ,GAAMQ,GAAaR,CAAE,CAAC,EAG7B,GAAGI,GAAqB,QAAQ,EAC7B,IAAIJ,GAAMS,GAAYT,EAAI,CAAE,OAAA5B,GAAQ,UAAAX,EAAU,CAAC,CAAC,EAGnD,GAAG2C,GAAqB,QAAQ,EAC7B,IAAIJ,GAAMU,GAAYV,CAAE,CAAC,CAC9B,EAGMW,GAAWC,EAAM,IAAM9B,EAG3B,GAAGsB,GAAqB,UAAU,EAC/B,IAAIJ,GAAMa,GAAcb,CAAE,CAAC,EAG9B,GAAGI,GAAqB,SAAS,EAC9B,IAAIJ,GAAMc,GAAad,EAAI,CAAE,UAAArC,GAAW,QAAAJ,GAAS,OAAAS,EAAO,CAAC,CAAC,EAG7D,GAAGoC,GAAqB,SAAS,EAC9B,IAAIJ,GAAMtB,EAAQ,kBAAkB,EACjCqC,GAAoBf,EAAI,CAAE,OAAA5B,GAAQ,UAAAf,EAAU,CAAC,EAC7C2D,CACJ,EAGF,GAAGZ,GAAqB,cAAc,EACnC,IAAIJ,GAAMiB,GAAiBjB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,EAAQ,CAAC,CAAC,EAGzD,GAAGU,GAAqB,SAAS,EAC9B,IAAIJ,GAAMA,EAAG,aAAa,cAAc,IAAM,aAC3CkB,GAAGnD,GAAS,IAAMoD,GAAanB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,GAAS,MAAAG,EAAM,CAAC,CAAC,EACjEqB,GAAGrD,GAAS,IAAMsD,GAAanB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,GAAS,MAAAG,EAAM,CAAC,CAAC,CACrE,EAGF,GAAGO,GAAqB,MAAM,EAC3B,IAAIJ,GAAMoB,GAAUpB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,EAAQ,CAAC,CAAC,EAGlD,GAAGU,GAAqB,KAAK,EAC1B,IAAIJ,GAAMqB,GAAqBrB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,GAAS,QAAAnC,EAAQ,CAAC,CAAC,EAGtE,GAAG6C,GAAqB,KAAK,EAC1B,IAAIJ,GAAMsB,GAAetB,EAAI,CAAE,UAAArC,GAAW,QAAA+B,GAAS,MAAAG,GAAO,QAAAtC,EAAQ,CAAC,CAAC,CACzE,CAAC,EAGKgE,GAAapE,GAChB,KACC4C,EAAU,IAAMY,EAAQ,EACxBa,GAAUrB,EAAQ,EAClBD,EAAY,CAAC,CACf,EAGFqB,GAAW,UAAU,EAMrB,OAAO,UAAapE,GACpB,OAAO,UAAaE,GACpB,OAAO,QAAaE,GACpB,OAAO,UAAaE,GACpB,OAAO,UAAaE,GACpB,OAAO,QAAaE,GACpB,OAAO,QAAaE,GACpB,OAAO,OAAaC,GACpB,OAAO,OAAaO,GACpB,OAAO,WAAagD", - "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_a", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "actions", "_a", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "getElementContainer", "parent", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderTooltip", "id", "h", "renderAnnotation", "id", "prefix", "anchor", "h", "renderTooltip", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "tags", "configuration", "truncate", "tag", "id", "type", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "height", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "target$", "tooltip", "index", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "merge", "filter", "debounceTime", "auditTime", "animationFrameScheduler", "throttleTime", "origin", "fromEvent", "ev", "withLatestFrom", "_a", "parent", "getActiveElement", "target", "delay", "tap", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "el", "getElements", "nodes", "it", "node", "text", "match", "id", "force", "marker", "swap", "source", "target", "mountAnnotationList", "target$", "print$", "parent", "prefix", "annotations", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "pairs", "annotation", "getElement", "takeUntil", "takeLast", "active", "inner", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "viewport$", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "withLatestFrom", "tab", "y", "set", "label", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "viewport$", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "observeOn", "take", "item", "getElements", "container", "getElementContainer", "getElementSize", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "match", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "getComponentElements", "consent", "EMPTY", "fetchSourceFacts", "tap", "facts", "catchError", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "smooth$", "merge", "debounceTime", "filter", "withLatestFrom", "behavior", "container", "getElementContainer", "getElementSize", "takeUntil", "skip", "repeat", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] -} diff --git a/assets/javascripts/bundle.ba449ae6.min.js b/assets/javascripts/bundle.ba449ae6.min.js new file mode 100644 index 0000000000..04f83cfe0f --- /dev/null +++ b/assets/javascripts/bundle.ba449ae6.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var qe=T.type,Ue=T.tagName;return!!(Ue==="INPUT"&&a[qe]&&!T.readOnly||Ue==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function re(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,z){d.append(z,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(T){var qe=h[T];h[T]=function(){qe.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},re=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=re;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var qe=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},Ue=qe;function Ie(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(w){return typeof w}:Ie=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Ie(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Ie(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",Rt=Ue({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Le,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(Rt){Le=Le&&!!document.queryCommandSupported(Rt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function We(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&We(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&We(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=Fe.EMPTY;function It(e){return e instanceof Fe||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new Fe(function(){n.currentObservers=null,We(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var On=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Ke(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):me,Oe(1),r?He(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;re(),T==null||T.unsubscribe()};return g(function(T,qe){d++,!v&&!h&&B();var Ue=m=m!=null?m:r();qe.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),Ue.subscribe(qe),!u&&d>0&&(u=new et({next:function(Ie){return Ue.next(Ie)},error:function(Ie){v=!0,B(),p=jr(re,o,Ie),Ue.error(Ie)},complete:function(){h=!0,B(),p=jr(re,a),Ue.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),Y())}function Ge(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,we),l(()=>Ge(e)),N(Ge(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,we),l(()=>rr(e)),N(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),N(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return cr[e].checked}function Ne(e,t){cr[e].checked!==t&&cr[e].click()}function Be(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>se(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function je(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Ge(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(`

    Awesome LSIO

    Administration

    Container Description
    doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.
    endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.
    ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user’s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).
    netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.
    netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.
    openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server.
    snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Audiobooks

    Container Description
    booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of

    Automation

    Container Description
    domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.
    habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as "On", "Off" and "brightness" commands of the hue protocol. This bridge can control most devices that have a distinct API.
    homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
    kanzi kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.

    Backup

    Container Description
    duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.
    resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.
    rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required."
    syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

    Books

    Container Description
    calibre calibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts.
    calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.
    cops cops by Sébastien Lucas, stands for Calibre OPDS (and HTML) Php Server.
    lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.
    mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.
    readarr readarr - Book Manager and Automation (Sonarr for Ebooks)
    ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.

    Cloud

    Container Description
    nextcloud nextcloud gives you access to all your files wherever you are.

    Crypto

    Container Description
    gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.
    nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.
    nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.
    nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    DNS

    Container Description
    adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.
    ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.
    duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

    Dashboard

    Container Description
    heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way.
    muximux muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.

    Databases

    Container Description
    mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL.
    mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.
    phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.
    sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

    Docker

    Container Description
    docker-compose No description
    fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

    Documents

    Container Description
    libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.
    paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."
    paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."
    papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS."

    Downloaders

    Container Description
    deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client.
    nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.
    nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.
    pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.
    qbittorrent The qbittorrent project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.
    sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.
    transmission 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.

    FTP

    Container Description
    davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.
    filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    Family

    Container Description
    babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.

    File Sharing

    Container Description
    projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.
    pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.
    pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.
    snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.
    xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.

    Finance

    Container Description
    budge budge is an open source 'budgeting with envelopes' personal finance app.

    Games

    Container Description
    emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.
    minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

    Graphics

    Container Description
    blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience
    kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

    IRC

    Container Description
    limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.
    ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.
    pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.
    quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.
    quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.
    thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.
    znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.

    Indexers

    Container Description
    jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
    nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.
    prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

    Media Management

    Container Description
    bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.
    medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
    plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.
    radarr radarr - A fork of Sonarr to work with movies à la Couchpotato.
    sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
    sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..
    sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Media Players

    Container Description
    emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.
    jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.
    plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Media Requesters

    Container Description
    doplarr doplarr is an *arr request bot for Discord."
    ombi ombi allows you to host your own Plex Request and user management system.
    overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

    Media Tools

    Container Description
    embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.
    ffmpeg No description
    htpcmanager htpcmanager is a front end for many htpc related applications.
    minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.
    oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.
    synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.
    tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.
    tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
    webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.

    Monitor

    Container Description
    apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API.
    healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.
    librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.
    smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.
    syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.

    Music

    Container Description
    airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.
    audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.
    beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.
    daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.
    headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent and Blackhole.
    lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
    mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.

    Network

    Container Description
    unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.
    wireshark Wireshark is the world’s foremost and widely-used network protocol analyzer. It lets you see what’s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.

    Photos

    Container Description
    chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.
    darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.
    digikam digiKam: Professional Photo Management with the Power of Open Source
    lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely."
    photoshow photoshow is gallery software at its easiest, it doesn't even require a database.
    piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.
    pixapop pixapop is an open-source single page application to view your photos in the easiest way possible.

    Programming

    Container Description
    cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.
    code-server code-server is VS Code running on a remote server, accessible through the browser.
    openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.
    pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.

    RSS

    Container Description
    freshrss freshrss is a free, self-hostable aggregator for rss feeds.

    Recipes

    Container Description
    grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

    Remote

    Container Description
    guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.
    rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.
    remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.
    webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.

    Science

    Container Description
    boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.
    foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

    Storage

    Container Description
    diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.
    qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.
    scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

    Tools

    Container Description
    yq No description

    VPN

    Container Description
    wireguard WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

    Web

    Container Description
    firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.
    grav grav is a Fast, Simple, and Flexible, file-based Web-platform.
    nginx nginx is a simple webserver with php support. The config files reside in /config for easy user customization.
    swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.

    Wiki

    Container Description
    bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.
    dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.
    dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.
    hedgedoc HedgeDoc gives you access to all your files wherever you are.
    raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.
    wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS.
    \ No newline at end of file + Awesome LSIO - LinuxServer.io

    Awesome LSIO

    Administration

    Container Description
    doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.
    endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.
    ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user’s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).
    netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.
    netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.
    openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server.
    snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Audiobooks

    Container Description
    booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of

    Automation

    Container Description
    domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.
    habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as "On", "Off" and "brightness" commands of the hue protocol. This bridge can control most devices that have a distinct API.
    homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
    kanzi kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.

    Backup

    Container Description
    duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.
    resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.
    rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required."
    syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

    Books

    Container Description
    calibre calibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts.
    calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.
    cops cops by Sébastien Lucas, stands for Calibre OPDS (and HTML) Php Server.
    lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.
    mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.
    readarr readarr - Book Manager and Automation (Sonarr for Ebooks)
    ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.

    Cloud

    Container Description
    nextcloud nextcloud gives you access to all your files wherever you are.

    Crypto

    Container Description
    gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.
    nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.
    nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.
    nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    DNS

    Container Description
    adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.
    ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.
    duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

    Dashboard

    Container Description
    heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way.
    muximux muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.

    Databases

    Container Description
    mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL.
    mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.
    phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.
    sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

    Docker

    Container Description
    docker-compose No description
    fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

    Documents

    Container Description
    libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.
    paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."
    paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."
    papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS."

    Downloaders

    Container Description
    deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client.
    nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.
    nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.
    pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.
    qbittorrent The qbittorrent project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.
    sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.
    transmission 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.

    FTP

    Container Description
    davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.
    filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    Family

    Container Description
    babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.

    File Sharing

    Container Description
    projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.
    pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.
    pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.
    snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.
    xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.

    Finance

    Container Description
    budge budge is an open source 'budgeting with envelopes' personal finance app.

    Games

    Container Description
    emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.
    minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

    Graphics

    Container Description
    blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience
    kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

    IRC

    Container Description
    limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.
    ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.
    pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.
    quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.
    quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.
    thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.
    znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.

    Indexers

    Container Description
    jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
    nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.
    prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

    Media Management

    Container Description
    bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.
    medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
    plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.
    radarr radarr - A fork of Sonarr to work with movies à la Couchpotato.
    sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
    sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..
    sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Media Players

    Container Description
    emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.
    jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.
    plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Media Requesters

    Container Description
    doplarr doplarr is an *arr request bot for Discord."
    ombi ombi allows you to host your own Plex Request and user management system.
    overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

    Media Tools

    Container Description
    embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.
    ffmpeg No description
    htpcmanager htpcmanager is a front end for many htpc related applications.
    minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.
    oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.
    synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.
    tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.
    tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
    webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.

    Monitor

    Container Description
    apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API.
    healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.
    librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.
    smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.
    syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.

    Music

    Container Description
    airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.
    audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.
    beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.
    daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.
    headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent and Blackhole.
    lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
    mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.

    Network

    Container Description
    unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.
    wireshark Wireshark is the world’s foremost and widely-used network protocol analyzer. It lets you see what’s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.

    Photos

    Container Description
    chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.
    darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.
    digikam digiKam: Professional Photo Management with the Power of Open Source
    lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely."
    photoshow photoshow is gallery software at its easiest, it doesn't even require a database.
    piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.
    pixapop pixapop is an open-source single page application to view your photos in the easiest way possible.

    Programming

    Container Description
    cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.
    code-server code-server is VS Code running on a remote server, accessible through the browser.
    openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.
    pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.

    RSS

    Container Description
    freshrss freshrss is a free, self-hostable aggregator for rss feeds.

    Recipes

    Container Description
    grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

    Remote

    Container Description
    guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.
    rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.
    remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.
    webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.

    Science

    Container Description
    boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.
    foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

    Storage

    Container Description
    diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.
    qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.
    scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

    Tools

    Container Description
    yq No description

    VPN

    Container Description
    wireguard WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

    Web

    Container Description
    firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.
    grav grav is a Fast, Simple, and Flexible, file-based Web-platform.
    nginx nginx is a simple webserver with php support. The config files reside in /config for easy user customization.
    swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.

    Wiki

    Container Description
    bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.
    dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.
    dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.
    hedgedoc HedgeDoc gives you access to all your files wherever you are.
    raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.
    wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS.
    \ No newline at end of file diff --git a/general/container-customization/index.html b/general/container-customization/index.html index 6d21fca7aa..780054ec8e 100644 --- a/general/container-customization/index.html +++ b/general/container-customization/index.html @@ -1,4 +1,4 @@ - Customizing LinuxServer Containers - LinuxServer.io

    Customizing LinuxServer Containers

    One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves.

    Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance.

    Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools:

    • Private Custom Scripts
    • Private Custom Services
    • Public Facing Docker Mods

    All of the functionality described in this post is live on every one of the containers we currently maintain:

    https://fleet.linuxserver.io

    NOTE: While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support.

    Custom Scripts

    The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins.

    Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or

    services:
    + Customizing LinuxServer Containers - LinuxServer.io       

    Customizing LinuxServer Containers

    One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves.

    Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance.

    Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools:

    • Private Custom Scripts
    • Private Custom Services
    • Public Facing Docker Mods

    All of the functionality described in this post is live on every one of the containers we currently maintain:

    https://fleet.linuxserver.io

    NOTE: While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support.

    Custom Scripts

    The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins.

    Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or

    services:
       bar:
         volumes:
           - /home/foo/appdata/bar:/config
    @@ -33,4 +33,4 @@ apk add --no-cache   -v path to watch folder:/watch \
       --restart unless-stopped \
       linuxserver/transmission
    -

    The source code for this mod can be found here.

    NOTE: When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control.

    We are here to help

    If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out.

    Our Discord server is best for quick direct contact and our Forum for a longer running project.

    There is zero barrier to entry for these levels of container customization and you are in complete control.

    We are looking forward to your next creation.

    \ No newline at end of file +

    The source code for this mod can be found here.

    NOTE: When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control.

    We are here to help

    If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out.

    Our Discord server is best for quick direct contact and our Forum for a longer running project.

    There is zero barrier to entry for these levels of container customization and you are in complete control.

    We are looking forward to your next creation.

    \ No newline at end of file diff --git a/general/container-execution/index.html b/general/container-execution/index.html index ef168aa91c..0c6d594ea6 100644 --- a/general/container-execution/index.html +++ b/general/container-execution/index.html @@ -1,7 +1,7 @@ - Container Execution - LinuxServer.io

    Container Execution

    You may find at some point you need to view the internal data of a container.

    Shell Access

    Particularly useful when debugging the application - to shell in to one of our containers, run the following:

    docker exec -it <container_name> /bin/bash
    + Container Execution - LinuxServer.io       

    Container Execution

    You may find at some point you need to view the internal data of a container.

    Shell Access

    Particularly useful when debugging the application - to shell in to one of our containers, run the following:

    docker exec -it <container_name> /bin/bash
     

    Tailing the logs

    The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the docker logs command:

    docker logs -f --tail=<number_of_lines_to_start_with> <container_name>
     

    The --tail argument is optional, but useful if the application has been running for a long time - the logs command by default will output all logs.

    To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:

    # ~/.bash_aliases
     alias dtail='docker logs -tf --tail="50" "$@"'
     

    Execute it with dtail <container_name>.

    Checking the build version

    If you are experiencing issues with one of our containers, it helps us to know which version of the image your container is running from. The primary reason we ask for this is because you may be reporting an issue we are aware of and have subsequently fixed. However, if you are running on the latest version of our image, it could indeed be a newly found bug, which we'd want to know more about.

    To obtain the build version for the container:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' <container_name>
     

    Or the image:

    docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/<image_name>
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/general/containers-101/index.html b/general/containers-101/index.html index 0a5f593db2..6b3171e3f2 100644 --- a/general/containers-101/index.html +++ b/general/containers-101/index.html @@ -1,3 +1,3 @@ - Docker Containers: 101 - LinuxServer.io

    Docker Containers: 101

    A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever – the person who built the container for you took care of that. Containers don’t usually ship with configuration files baked in though. This is because the contents of a container are ‘stateless’ or ‘immutable’. In English, this means the state or filesystem of the container itself cannot be modified after it is created.

    What do I need to know?

    To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.

    docker run hello-world
    + Docker Containers: 101 - LinuxServer.io       

    Docker Containers: 101

    A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever – the person who built the container for you took care of that. Containers don’t usually ship with configuration files baked in though. This is because the contents of a container are ‘stateless’ or ‘immutable’. In English, this means the state or filesystem of the container itself cannot be modified after it is created.

    What do I need to know?

    To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.

    docker run hello-world
     

    That's it, your first docker container. It pre-supposes you have docker installed but that's all it takes to run a container. You didn't need to know anything about installed what that app needed to run - this is the key benefit. hello-world is a simple example but imagine you have a complex application with a large number of dependencies and it is tied to a specific version of Python or Java. Then imagine you have a second app again tied to a specific, but different, version of Java or Python. Now you have to try and ensure these two (often conflicting) versions sit on the same host and play nice. In the world of containers these two versions can operate in complete isolation from one another. Bliss.

    Key Terminology

    There are a few terms you might find useful to understand when working with containers:

    • docker - the first, and most popular, container runtime - it sits as an abstraction layer between the kernels features such as cgroups or namespaces and running applications
    • container - a sandboxed process isolated in memory and running instance of an image
    • image - a pre-built filesystem in a format ready to be understood by a container runtime (usually docker)
    • volume - use volumes to persist data outside of the containers sandboxed filesystem
    • environment - a way of configuring the sandboxed environment your container runs in

    Key Concepts

    Containers are completely sandboxed environments by the Linux kernel. It may help you to think of them somewhat like a small VM however in practice this is largely false. The Linux kernel controls access to various system resources utilising control groups (cgroups). We rely on docker to translate these complex concepts into simple ones that users can understand and consume.

    By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the -p flag.

    docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt
    -

    Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next.

    Containers are an amazing way to run applications in a secure, sandboxed way.

    \ No newline at end of file +

    Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next.

    Containers are an amazing way to run applications in a secure, sandboxed way.

    \ No newline at end of file diff --git a/general/docker-compose/index.html b/general/docker-compose/index.html index 46ea18f084..3cbc95b172 100644 --- a/general/docker-compose/index.html +++ b/general/docker-compose/index.html @@ -1,4 +1,4 @@ - Docker Compose - LinuxServer.io

    Docker Compose

    Intro

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

    Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only.

    Installation

    • Install Option 1 (recommended)

    Starting with version 2, Docker started publishing docker compose as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin.

    You can install docker compose via the following commands:

    ARCH=$(uname -m) && [[ "${ARCH}" == "armv7l" ]] && ARCH="armv7"
    + Docker Compose - LinuxServer.io       

    Docker Compose

    Intro

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

    Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only.

    Installation

    • Install Option 1 (recommended)

    Starting with version 2, Docker started publishing docker compose as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin.

    You can install docker compose via the following commands:

    ARCH=$(uname -m) && [[ "${ARCH}" == "armv7l" ]] && ARCH="armv7"
     sudo mkdir -p /usr/local/lib/docker/cli-plugins
     sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-${ARCH}" -o /usr/local/lib/docker/cli-plugins/docker-compose
     sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
    @@ -77,4 +77,4 @@ docker image prune 

    There are multiple ways to see the logs of your containers. In some instances, using docker logs is preferable to docker compose logs. By default docker logs will not run unless you define which service the logs are coming from. The docker compose logs will pull all of the logs for the services defined in the docker-compose.yml file.

    When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your docker-compose.yml file, it is not helpful to submit all of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using docker logs heimdall or docker compose logs heimdall. The bash_alias for dclogs can be used if you define your service after you've typed the alias. Likewise, the bash_alias detail will not run without defining the service after it.

    Some distributions, like Ubuntu, already have the code snippet below in the ~/.bashrc file. If it is not included, you'll need to add the following to your ~/.bashrc file in order for the aliases file to be picked up:

    if [ -f ~/.bash_aliases ]; then
         . ~/.bash_aliases
     fi
    -

    Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.

    \ No newline at end of file +

    Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.

    \ No newline at end of file diff --git a/general/fleet/index.html b/general/fleet/index.html index b21b9c38dc..c66b005d72 100644 --- a/general/fleet/index.html +++ b/general/fleet/index.html @@ -1,4 +1,4 @@ - Fleet - LinuxServer.io

    Fleet

    How Fleet works

    Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data.

    It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable. This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner.

    Why a snapshot?

    In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call.

    As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API:

    API Time (ms)
    Docker Hub (multiple calls) 52000ms
    Fleet 50ms

    Capabilities

    Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.

    Hidden

    If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included.

    Unstable

    Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly.

    Deprecated

    If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context.

    API

    Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository

    {% api-method method="get" host="https://fleet.linuxserver.io" path="/api/v1/images" %} {% api-method-summary %} Get All Repositories and Images

    {% api-method-description %} Returns all synchronized images.

    {% api-method-spec %}

    {% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned.

    {
    + Fleet - LinuxServer.io       

    Fleet

    How Fleet works

    Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data.

    It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable. This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner.

    Why a snapshot?

    In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call.

    As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API:

    API Time (ms)
    Docker Hub (multiple calls) 52000ms
    Fleet 50ms

    Capabilities

    Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.

    Hidden

    If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included.

    Unstable

    Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly.

    Deprecated

    If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context.

    API

    Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository

    {% api-method method="get" host="https://fleet.linuxserver.io" path="/api/v1/images" %} {% api-method-summary %} Get All Repositories and Images

    {% api-method-description %} Returns all synchronized images.

    {% api-method-spec %}

    {% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned.

    {
         "status": "OK",
         "data" {
             "totalPullCount": 1862494227,
    @@ -51,4 +51,4 @@ fleet.database.password=<fleet_sql_password>
     
     # Password security
     fleet.admin.secret=<a_random_string>
    -

    All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties.

    {% hint style="info" %} If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. fleet.app.port=8080 becomes export fleet_app_port=8080

    Property Name Purpose
    fleet.app.port The port which the application will be running under.
    fleet.admin.secret A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret.
    fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver
    fleet.database.url The full JDBC connection string to the database.
    fleet.database.username The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations.
    fleet.database.password The password for the SQL user

    Runtime Arguments

    As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime.

    {% hint style="info" %} Unlike the properties defined above, these properties are only accessed via the JVM arguments (-D).

    Runtime Argument Purpose
    fleet.config.base The absolute path of the configuration file.
    fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended.
    fleet.nuke.database Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet.
    fleet.skip.sync.on.startup By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval.

    Default User

    When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are:

    Username: admin

    Password: admin

    {% hint style="warning" %} You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.

    \ No newline at end of file +

    All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties.

    {% hint style="info" %} If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. fleet.app.port=8080 becomes export fleet_app_port=8080

    Property Name Purpose
    fleet.app.port The port which the application will be running under.
    fleet.admin.secret A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret.
    fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver
    fleet.database.url The full JDBC connection string to the database.
    fleet.database.username The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations.
    fleet.database.password The password for the SQL user

    Runtime Arguments

    As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime.

    {% hint style="info" %} Unlike the properties defined above, these properties are only accessed via the JVM arguments (-D).

    Runtime Argument Purpose
    fleet.config.base The absolute path of the configuration file.
    fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended.
    fleet.nuke.database Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet.
    fleet.skip.sync.on.startup By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval.

    Default User

    When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are:

    Username: admin

    Password: admin

    {% hint style="warning" %} You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.

    \ No newline at end of file diff --git a/general/running-our-containers/index.html b/general/running-our-containers/index.html index 7de929c020..64b1e36c60 100644 --- a/general/running-our-containers/index.html +++ b/general/running-our-containers/index.html @@ -1,8 +1,8 @@ - Running LinuxServer Containers - LinuxServer.io

    Running LinuxServer Containers

    Image Structure

    Base Images

    We have curated various base images which our main application images derive from. This is beneficial for two main reasons:

    • A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies.
    • Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors.

    The /config volume

    To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume.

    We do this because we believe that it makes it easier to answer the common question of "where does the application data get persisted?" - the answer being "always in /config". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself!

    Creating a Container

    To create a container from one of our images, you must use either docker create or docker run. Each image follows the same pattern in the command when creating a container:

    docker create \
    + Running LinuxServer Containers - LinuxServer.io       

    Running LinuxServer Containers

    Image Structure

    Base Images

    We have curated various base images which our main application images derive from. This is beneficial for two main reasons:

    • A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies.
    • Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors.

    The /config volume

    To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume.

    We do this because we believe that it makes it easier to answer the common question of "where does the application data get persisted?" - the answer being "always in /config". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself!

    Creating a Container

    To create a container from one of our images, you must use either docker create or docker run. Each image follows the same pattern in the command when creating a container:

    docker create \
         --name=<container_name> \
         -v <path_to_data>:/config \
         -e PUID=<uid> \
         -e PGID=<gid> \
         -p <host_port>:<app_port> \
         linuxserver/<image_name>
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/general/swag/index.html b/general/swag/index.html index 9edcebfd82..d7d14d17c6 100644 --- a/general/swag/index.html +++ b/general/swag/index.html @@ -1,4 +1,4 @@ - SWAG - LinuxServer.io

    SWAG

    The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn

    Table of Contents

    Introduction

    What are SSL certs?

    SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party.

    What is Let's Encrypt (and/or ZeroSSL)?

    In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL, one can get free certs via automated means.

    The SWAG docker image, published and maintained by LinuxServer.io, makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image.

    Creating a SWAG container

    Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios.

    docker cli

    docker create \
    + SWAG - LinuxServer.io       

    SWAG

    The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn

    Table of Contents

    Introduction

    What are SSL certs?

    SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party.

    What is Let's Encrypt (and/or ZeroSSL)?

    In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL, one can get free certs via automated means.

    The SWAG docker image, published and maintained by LinuxServer.io, makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image.

    Creating a SWAG container

    Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios.

    docker cli

    docker create \
       --name=swag \
       --cap-add=NET_ADMIN \
       -e PUID=1000 \
    @@ -681,4 +681,4 @@ rm latest.tar.gz
     

    That way, nginx will use the / location block from our heimdall proxy conf instead.

    After that, when we navigate to https://linuxserver-test.com, we'll see the Heimdall interface.

    If we want to password protect our new homepage, we can run the following on the host command line to create a new .htpasswd file: docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername. After which, we can activate authentication by editing the heimdall.subfolder.conf file to uncomment the relevant lines so it reads:

        # enable the next two lines for http auth
         auth_basic "Restricted";
         auth_basic_user_file /config/nginx/.htpasswd;
    -

    Troubleshooting

    We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io

    Common errors

    404

    This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.

    502

    This error means that nginx can't talk to the application. There is a few common reasons for this:

    • The application and SWAG is not on the same custom docker network

      Further up we talk about how to set up Docker networking, however there are some other common traps

    • The container name does not match the application name.

      Covered in the section for Understanding the proxy conf structure

    • You manually changed the port.

      Also covered in the section for Understanding the proxy conf structure

    • The container originally ran with host networking, or the default bridge.

      In most cases the contents of /config/nginx/resolver.conf; should be ...resolver 127.0.0.11 valid=30s;, if this is not the case, you can:

    • Delete it, and restart the container to have it regenerate

    • Manually set the content(we wont override it)

    Final Thoughts

    This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub. If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn

    How to Request Support

    As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread. If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link:

    • Docker run/create or compose yml you used
    • Full docker log (docker logs swag)
    • Any relevant conf files (default, nginx.conf or specific proxy conf)
    \ No newline at end of file +

    Troubleshooting

    We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io

    Common errors

    404

    This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.

    502

    This error means that nginx can't talk to the application. There is a few common reasons for this:

    • The application and SWAG is not on the same custom docker network

      Further up we talk about how to set up Docker networking, however there are some other common traps

    • The container name does not match the application name.

      Covered in the section for Understanding the proxy conf structure

    • You manually changed the port.

      Also covered in the section for Understanding the proxy conf structure

    • The container originally ran with host networking, or the default bridge.

      In most cases the contents of /config/nginx/resolver.conf; should be ...resolver 127.0.0.11 valid=30s;, if this is not the case, you can:

    • Delete it, and restart the container to have it regenerate

    • Manually set the content(we wont override it)

    Final Thoughts

    This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub. If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn

    How to Request Support

    As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread. If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link:

    • Docker run/create or compose yml you used
    • Full docker log (docker logs swag)
    • Any relevant conf files (default, nginx.conf or specific proxy conf)
    \ No newline at end of file diff --git a/general/understanding-puid-and-pgid/index.html b/general/understanding-puid-and-pgid/index.html index a0bc6c49e0..7a846d72fb 100644 --- a/general/understanding-puid-and-pgid/index.html +++ b/general/understanding-puid-and-pgid/index.html @@ -1,6 +1,6 @@ - Understanding PUID and PGID - LinuxServer.io

    Understanding PUID and PGID

    {% hint style="info" %} We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.

    Why use these?

    Docker runs all of its containers under the root user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as root. This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this).

    Another issue is file management within the container's mapped volumes. If the process is running under root, all files and directories created during the container's lifespan will be owned by root, thus becoming inaccessible by you.

    Using the PUID and PGID allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly.

    Using the variables

    When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command:

    docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets
    + Understanding PUID and PGID - LinuxServer.io       

    Understanding PUID and PGID

    {% hint style="info" %} We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.

    Why use these?

    Docker runs all of its containers under the root user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as root. This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this).

    Another issue is file management within the container's mapped volumes. If the process is running under root, all files and directories created during the container's lifespan will be owned by root, thus becoming inaccessible by you.

    Using the PUID and PGID allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly.

    Using the variables

    When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command:

    docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets
     

    Or, if you use docker-compose, add them to the environment: section:

    environment:
       - PUID=1000
       - PGID=1000
     

    It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid.

    id $user
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/general/updating-our-containers/index.html b/general/updating-our-containers/index.html index ff9ff27462..17c3302805 100644 --- a/general/updating-our-containers/index.html +++ b/general/updating-our-containers/index.html @@ -1,4 +1,4 @@ - Updating our containers - LinuxServer.io

    Updating our containers

    Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features.

    Steps required to update

    Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container.

    Stop the container

    Firstly, stop the container.

    docker stop <container_name>
    + Updating our containers - LinuxServer.io       

    Updating our containers

    Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features.

    Steps required to update

    Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container.

    Stop the container

    Firstly, stop the container.

    docker stop <container_name>
     

    Remove the container

    Once the container has been stopped, remove it.

    Important: Did you remember to persist the /config volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. Read up on why this is important.

    docker rm <container_name>
     

    Pull the latest version

    Now you can pull the latest version of the application image from Docker Hub.

    docker pull linuxserver/<image_name>
     

    Recreate the container

    Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been outlined in our documentation.

    docker create \
    @@ -13,4 +13,4 @@ docker-compose up -d 

    Or, to update all containers at once:

    docker-compose pull
     docker-compose up -d
     

    Removing old images

    Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the old version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can prune old images from your system, which will free up space:

    docker image prune
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/general/volumes/index.html b/general/volumes/index.html index 2a15f3f2d2..79b4bc7872 100644 --- a/general/volumes/index.html +++ b/general/volumes/index.html @@ -1,4 +1,4 @@ - Volumes - LinuxServer.io

    Volumes

    In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them.

    There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays.

    Mapping a volume to your container

    Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the /config directory.

    Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory /opt/appdata. Under this tree, you can create a single configuration directory for each of your containers.

    When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory:

    docker create --name my_container \
    + Volumes - LinuxServer.io       

    Volumes

    In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them.

    There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays.

    Mapping a volume to your container

    Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the /config directory.

    Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory /opt/appdata. Under this tree, you can create a single configuration directory for each of your containers.

    When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory:

    docker create --name my_container \
         -v /opt/appdata/my_config:/config \
         linuxserver/<an_image>
    -

    The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory.

    Remember: When dealing with mapping overlays, it always reads host:container

    You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the /config directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.

    \ No newline at end of file +

    The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory.

    Remember: When dealing with mapping overlays, it always reads host:container

    You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the /config directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.

    \ No newline at end of file diff --git a/images/docker-adguardhome-sync/index.html b/images/docker-adguardhome-sync/index.html index 164261e08e..453b13e1f6 100644 --- a/images/docker-adguardhome-sync/index.html +++ b/images/docker-adguardhome-sync/index.html @@ -1,4 +1,4 @@ - adguardhome-sync - LinuxServer.io

    linuxserver/adguardhome-sync

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from GitHub

    Application Setup

    Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + adguardhome-sync - LinuxServer.io       

    linuxserver/adguardhome-sync

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from GitHub

    Application Setup

    Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       adguardhome-sync:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Port for AdGuardHome Sync's web API.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    CONFIGFILE=/config/adguardhome-sync.yaml Set a custom config file.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it adguardhome-sync /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f adguardhome-sync
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' adguardhome-sync
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/adguardhome-sync:latest

    Versions

    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.12.21: - Rebase to Alpine 3.15.
    • 09.08.21: - Rebase to Alpine 3.14.
    • 08.04.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it adguardhome-sync /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f adguardhome-sync
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' adguardhome-sync
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/adguardhome-sync:latest

    Versions

    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.12.21: - Rebase to Alpine 3.15.
    • 09.08.21: - Rebase to Alpine 3.14.
    • 08.04.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-airsonic-advanced/index.html b/images/docker-airsonic-advanced/index.html index 9e49c20a2d..7ec3c9b247 100644 --- a/images/docker-airsonic-advanced/index.html +++ b/images/docker-airsonic-advanced/index.html @@ -1,4 +1,4 @@ - airsonic-advanced - LinuxServer.io

    linuxserver/airsonic-advanced

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Latest releases of Airsonic-Advanced

    Application Setup

    We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files.

    Please see notes about upgrading from v10 to v11 here

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + airsonic-advanced - LinuxServer.io       

    linuxserver/airsonic-advanced

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Latest releases of Airsonic-Advanced

    Application Setup

    We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files.

    Please see notes about upgrading from v10 to v11 here

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       airsonic-advanced:
    @@ -40,4 +40,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4040 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups.
    JAVA_OPTS=<options> For passing additional java options.

    Volume Mappings (-v)

    Volume Function
    /config Configuration file location.
    /music Location of music.
    /playlists Location for playlists to be saved to.
    /podcasts Location of podcasts.
    /media Location of other media.

    Device Mappings (--device)

    Parameter Function
    /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it airsonic-advanced /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic-advanced
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' airsonic-advanced
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/airsonic-advanced:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 25.07.22: - Add vorbis-tools.
    • 02.01.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it airsonic-advanced /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic-advanced
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' airsonic-advanced
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/airsonic-advanced:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 25.07.22: - Add vorbis-tools.
    • 02.01.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-airsonic/index.html b/images/docker-airsonic/index.html index 2856721896..9c9d2d6be7 100644 --- a/images/docker-airsonic/index.html +++ b/images/docker-airsonic/index.html @@ -1,4 +1,4 @@ - airsonic - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced

    linuxserver/airsonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + airsonic - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced

    linuxserver/airsonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       airsonic:
    @@ -40,4 +40,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4040 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups.
    JAVA_OPTS=<options> For passing additional java options.

    Volume Mappings (-v)

    Volume Function
    /config Configuration file location.
    /music Location of music.
    /playlists Location for playlists to be saved to.
    /podcasts Location of podcasts.
    /media Location of other media.

    Device Mappings (--device)

    Parameter Function
    /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it airsonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' airsonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/airsonic

    Versions

    • 13.01.22: - Deprecate in favor of airsonic-advanced.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Use new inhouse java baseimage for quicker builds.
    • 23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's.
    • 22.04.18: - Add the forgotten JAVA_OPTS to the run command.
    • 29.12.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it airsonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' airsonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/airsonic

    Versions

    • 13.01.22: - Deprecate in favor of airsonic-advanced.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Use new inhouse java baseimage for quicker builds.
    • 23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's.
    • 22.04.18: - Add the forgotten JAVA_OPTS to the run command.
    • 29.12.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-apprise-api/index.html b/images/docker-apprise-api/index.html index 0aaf3f8186..4af5e8890f 100644 --- a/images/docker-apprise-api/index.html +++ b/images/docker-apprise-api/index.html @@ -1,4 +1,4 @@ - apprise-api - LinuxServer.io

    linuxserver/apprise-api

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Apprise-api Takes advantage of Apprise through your network with a user-friendly API.

    • Send notifications to more then 65+ services.
    • An incredibly lightweight gateway to Apprise.
    • A production ready micro-service at your disposal.

    Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + apprise-api - LinuxServer.io       

    linuxserver/apprise-api

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Apprise-api Takes advantage of Apprise through your network with a user-friendly API.

    • Send notifications to more then 65+ services.
    • An incredibly lightweight gateway to Apprise.
    • A production ready micro-service at your disposal.

    Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       apprise-api:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 Port for apprise's interface and API.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where config is stored.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it apprise-api /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f apprise-api
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' apprise-api
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/apprise-api:latest

    Versions

    • 17.10.22: - Rebase to alpine 3.16, migrate to S6V3
    • 28.02.21: - Rebase to alpine 3.15.
    • 03.11.21: - Increase uWSGI buffer size to 32kb.
    • 16.05.21: - Add linuxserver wheel index.
    • 26.02.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it apprise-api /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f apprise-api
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' apprise-api
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/apprise-api:latest

    Versions

    • 17.10.22: - Rebase to alpine 3.16, migrate to S6V3
    • 28.02.21: - Rebase to alpine 3.15.
    • 03.11.21: - Increase uWSGI buffer size to 32kb.
    • 16.05.21: - Add linuxserver wheel index.
    • 26.02.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-audacity/index.html b/images/docker-audacity/index.html index 3f47ffa945..691b81d33f 100644 --- a/images/docker-audacity/index.html +++ b/images/docker-audacity/index.html @@ -1,4 +1,4 @@ - audacity - LinuxServer.io

    linuxserver/audacity

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + audacity - LinuxServer.io       

    linuxserver/audacity

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       audacity:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Audacity desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings and images

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it audacity /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f audacity
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' audacity
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/audacity:latest

    Versions

    • 13.12.22: - Rebase to Jammy.
    • 14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates.
    • 07.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it audacity /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f audacity
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' audacity
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/audacity:latest

    Versions

    • 13.12.22: - Rebase to Jammy.
    • 14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates.
    • 07.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-babybuddy/index.html b/images/docker-babybuddy/index.html index d1b8e24c9e..2236c971f5 100644 --- a/images/docker-babybuddy/index.html +++ b/images/docker-babybuddy/index.html @@ -1,4 +1,4 @@ - babybuddy - LinuxServer.io

    linuxserver/babybuddy

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin.

    By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + babybuddy - LinuxServer.io       

    linuxserver/babybuddy

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin.

    By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       babybuddy:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 the port for the web ui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com Add any address you'd like to access babybuddy at (comma separated, no spaces)

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration and data.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it babybuddy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f babybuddy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' babybuddy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/babybuddy:latest

    Versions

    • 23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs (see changes announcement).
    • 28.05.22: - Add missing PUID/PGID vars to readme.
    • 03.04.22: - Rebase to alpine-nginx baseimage. Add CSRF_TRUSTED_ORIGINS env var.
    • 11.12.21: - Add py3-mysqlclient for mysql/mariadb.
    • 14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml).
    • 25.07.21: - Add libpq for postgresql.
    • 08.07.21: - Fix pip install issue.
    • 05.07.21: - Update Gunicorn parameters to prevent WORKER_TIMEOUT issue.
    • 22.06.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it babybuddy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f babybuddy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' babybuddy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/babybuddy:latest

    Versions

    • 23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs (see changes announcement).
    • 28.05.22: - Add missing PUID/PGID vars to readme.
    • 03.04.22: - Rebase to alpine-nginx baseimage. Add CSRF_TRUSTED_ORIGINS env var.
    • 11.12.21: - Add py3-mysqlclient for mysql/mariadb.
    • 14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml).
    • 25.07.21: - Add libpq for postgresql.
    • 08.07.21: - Fix pip install issue.
    • 05.07.21: - Update Gunicorn parameters to prevent WORKER_TIMEOUT issue.
    • 22.06.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-base-alpine-example/index.html b/images/docker-base-alpine-example/index.html index aa2832a0d3..fbba861116 100644 --- a/images/docker-base-alpine-example/index.html +++ b/images/docker-base-alpine-example/index.html @@ -1 +1 @@ - Docker base alpine example - LinuxServer.io

    Docker base alpine example

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum Linuserver.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + Docker base alpine example - LinuxServer.io

    Docker base alpine example

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum Linuserver.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-base-ubuntu-example/index.html b/images/docker-base-ubuntu-example/index.html index 9d92ad7942..d7f3709e00 100644 --- a/images/docker-base-ubuntu-example/index.html +++ b/images/docker-base-ubuntu-example/index.html @@ -1 +1 @@ - Docker base ubuntu example - LinuxServer.io

    Docker base ubuntu example

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum Linuserver.io forum

       

    A custom base image built with Ubuntu cloud image and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + Docker base ubuntu example - LinuxServer.io

    Docker base ubuntu example

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum Linuserver.io forum

       

    A custom base image built with Ubuntu cloud image and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-alpine-nginx/index.html b/images/docker-baseimage-alpine-nginx/index.html index ae3faae119..ccf2e0368c 100644 --- a/images/docker-baseimage-alpine-nginx/index.html +++ b/images/docker-baseimage-alpine-nginx/index.html @@ -1 +1 @@ - baseimage-alpine-nginx - LinuxServer.io

    baseimage-alpine-nginx

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux, nginx and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file + baseimage-alpine-nginx - LinuxServer.io

    baseimage-alpine-nginx

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux, nginx and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file diff --git a/images/docker-baseimage-alpine-python/index.html b/images/docker-baseimage-alpine-python/index.html index d5b16f03f5..56b976729d 100644 --- a/images/docker-baseimage-alpine-python/index.html +++ b/images/docker-baseimage-alpine-python/index.html @@ -1 +1 @@ - baseimage-alpine-python - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux, python2 and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file + baseimage-alpine-python - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux, python2 and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file diff --git a/images/docker-baseimage-alpine/index.html b/images/docker-baseimage-alpine/index.html index 3bbbc9a069..56d874d081 100644 --- a/images/docker-baseimage-alpine/index.html +++ b/images/docker-baseimage-alpine/index.html @@ -1 +1 @@ - baseimage-alpine - LinuxServer.io

    baseimage-alpine

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC libera at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-alpine - LinuxServer.io

    baseimage-alpine

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC libera at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-arch/index.html b/images/docker-baseimage-arch/index.html index dd6c1207f7..baf9c5c91c 100644 --- a/images/docker-baseimage-arch/index.html +++ b/images/docker-baseimage-arch/index.html @@ -1 +1 @@ - baseimage-arch - LinuxServer.io

    baseimage-arch

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-arch - LinuxServer.io

    baseimage-arch

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-cloud9/index.html b/images/docker-baseimage-cloud9/index.html index a3be78b6f7..a24828a34b 100644 --- a/images/docker-baseimage-cloud9/index.html +++ b/images/docker-baseimage-cloud9/index.html @@ -1 +1 @@ - baseimage-cloud9 - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and Cloud9..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-cloud9 - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and Cloud9..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-fedora/index.html b/images/docker-baseimage-fedora/index.html index 1f40426954..96713d7e14 100644 --- a/images/docker-baseimage-fedora/index.html +++ b/images/docker-baseimage-fedora/index.html @@ -1 +1 @@ - baseimage-fedora - LinuxServer.io

    baseimage-fedora

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-fedora - LinuxServer.io

    baseimage-fedora

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-guacgui/index.html b/images/docker-baseimage-guacgui/index.html index 7dc6674ad5..66a12d254a 100644 --- a/images/docker-baseimage-guacgui/index.html +++ b/images/docker-baseimage-guacgui/index.html @@ -1,4 +1,4 @@ - baseimage-guacgui - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

     

    linuxserver/docker-baseimage-guacgui

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    docker

    docker create \
    + baseimage-guacgui - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

     

    linuxserver/docker-baseimage-guacgui

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    docker

    docker create \
       --name=docker-baseimage-guacgui \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -34,4 +34,4 @@ services:
         restart: unless-stopped
     

    Parameters

    Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Parameter Function
    -p 8080 Allows HTTP access to the internal X server.
    -p 3389 Allows RDP access to the internal X server.
    -e PUID=1000 for UserID - see below for explanation
    -e PGID=1000 for GroupID - see below for explanation
    -e TZ=Europe/London Specify a timezone to use EG Europe/London
    -e APPNAME=xclock Specify the graphical application name shown on RDP access.
    -e GUAC_USER=abc Specify the username for guacamole's web interface.
    -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 Specify the password's md5 hash for guacamole's web interface.
    -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz Specify the used keyboard layout for the RDP session used by the gucamole client. Possible values are "en-us-qwerty" (default), de-de-qwertz (German keyboard (qwertz)), fr-fr-azerty (French keyboard (azerty)), fr-ch-qwertz (Swiss French keyboard (qwertz)), it-it-qwerty (Italian keyboard), ja-jp-qwerty (Japanese keyboard) and sv-se-qwerty (Swedish keyboard).
    -v /config Contains X user's home directory contents.

     

    Application Setup

    This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage.  
    If GUAC_USER and GUAC_PASS are not set, there is no authentication. Passwords can be generated via the following:

    echo -n password | openssl md5
     
    printf '%s' password | md5sum
    -
    Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security.

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file +
    Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security.

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file diff --git a/images/docker-baseimage-gui/index.html b/images/docker-baseimage-gui/index.html index 1d240b98ca..ec0aecb0b4 100644 --- a/images/docker-baseimage-gui/index.html +++ b/images/docker-baseimage-gui/index.html @@ -1,4 +1,4 @@ - baseimage-gui - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

     

    linuxserver/docker-baseimage-gui

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here is an example to help you get started creating a graphical container.

    Dockerfile

    #Firefox via RDP
    + baseimage-gui - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver.io

    Contact information:

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

     

    linuxserver/docker-baseimage-gui

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here is an example to help you get started creating a graphical container.

    Dockerfile

    #Firefox via RDP
     FROM lsiobase/ubuntu-gui:amd64-latest
     
     #########################################
    @@ -36,4 +36,4 @@ s6-env DISPLAY=:1 HOME=/config
     
     # Execute Firefox
     /usr/bin/firefox
    -

    Access the Graphical Interface

    Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file +

    Access the Graphical Interface

    Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file diff --git a/images/docker-baseimage-mono/index.html b/images/docker-baseimage-mono/index.html index 588ceb331b..406fbdbcdb 100644 --- a/images/docker-baseimage-mono/index.html +++ b/images/docker-baseimage-mono/index.html @@ -1 +1 @@ - baseimage-mono - LinuxServer.io

    baseimage-mono

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu cloud image, mono and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file + baseimage-mono - LinuxServer.io

    baseimage-mono

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu cloud image, mono and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: "01.01.50:", desc: "I am the release message for this internal repo." }

    \ No newline at end of file diff --git a/images/docker-baseimage-rdesktop-web/index.html b/images/docker-baseimage-rdesktop-web/index.html index e940c3f441..8de16c971d 100644 --- a/images/docker-baseimage-rdesktop-web/index.html +++ b/images/docker-baseimage-rdesktop-web/index.html @@ -1 +1 @@ - baseimage-rdesktop-web - LinuxServer.io

    baseimage-rdesktop-web

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-rdesktop-web - LinuxServer.io

    baseimage-rdesktop-web

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-baseimage-rdesktop/index.html b/images/docker-baseimage-rdesktop/index.html index b109cd5226..49e50e05f7 100644 --- a/images/docker-baseimage-rdesktop/index.html +++ b/images/docker-baseimage-rdesktop/index.html @@ -1 +1 @@ - baseimage-rdesktop - LinuxServer.io

    baseimage-rdesktop

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file + baseimage-rdesktop - LinuxServer.io

    baseimage-rdesktop

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    IRC freenode at #linuxserver.io more information at:- IRC
    Forum LinuxServer.io forum

       

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-bazarr/index.html b/images/docker-bazarr/index.html index 1aefd6e4fa..59219d52c5 100644 --- a/images/docker-bazarr/index.html +++ b/images/docker-bazarr/index.html @@ -1,4 +1,4 @@ - bazarr - LinuxServer.io

    linuxserver/bazarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from Bazarr
    development Pre-releases from Bazarr

    Application Setup

    • Once running the URL will be http://<host-ip>:6767.
    • You must complete all the setup parameters in the webui before you can save the config.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + bazarr - LinuxServer.io       

    linuxserver/bazarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from Bazarr
    development Pre-releases from Bazarr

    Application Setup

    • Once running the URL will be http://<host-ip>:6767.
    • You must complete all the setup parameters in the webui before you can save the config.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       bazarr:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    6767 Allows HTTP access to the internal webserver.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Bazarr data
    /movies Location of your movies
    /tv Location of your TV Shows

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it bazarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bazarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' bazarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bazarr:latest

    Versions

    • 11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel.
    • 25.10.21: - Rebase to alpine 3.14. Fix numpy wheel.
    • 22.10.21: - Added openblas package to prevent numpy error.
    • 16.05.21: - Use wheel index.
    • 19.04.21: - Install from release zip.
    • 07.04.21: - Move app to /app/bazarr/bin, add package_info.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.05.20: - Add donation links for Bazarr to Github sponsors button and container log.
    • 08.04.20: - Removed /movies and /tv volumes from Dockerfiles.
    • 28.12.19: - Upgrade to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add env variable for setting umask.
    • 12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe.
    • 17.04.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.09.18: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it bazarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bazarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' bazarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bazarr:latest

    Versions

    • 11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel.
    • 25.10.21: - Rebase to alpine 3.14. Fix numpy wheel.
    • 22.10.21: - Added openblas package to prevent numpy error.
    • 16.05.21: - Use wheel index.
    • 19.04.21: - Install from release zip.
    • 07.04.21: - Move app to /app/bazarr/bin, add package_info.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.05.20: - Add donation links for Bazarr to Github sponsors button and container log.
    • 08.04.20: - Removed /movies and /tv volumes from Dockerfiles.
    • 28.12.19: - Upgrade to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add env variable for setting umask.
    • 12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe.
    • 17.04.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.09.18: - Initial release.
    \ No newline at end of file diff --git a/images/docker-beets/index.html b/images/docker-beets/index.html index 8ca5199d47..83fe92aa16 100644 --- a/images/docker-beets/index.html +++ b/images/docker-beets/index.html @@ -1,4 +1,4 @@ - beets - LinuxServer.io

    linuxserver/beets

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Beets Releases
    nightly Built against head of Beets git, generally considered unstable but a likely choice for power users of the application.

    Application Setup

    Edit the config file in /config

    To edit the config from within the container use beet config -e

    For a command prompt as user abc docker exec -it -u abc beets bash

    See Beets for more info.

    Contains beets-extrafiles plugin, configuration details

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + beets - LinuxServer.io       

    linuxserver/beets

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Beets Releases
    nightly Built against head of Beets git, generally considered unstable but a likely choice for power users of the application.

    Application Setup

    Edit the config file in /config

    To edit the config from within the container use beet config -e

    For a command prompt as user abc docker exec -it -u abc beets bash

    See Beets for more info.

    Contains beets-extrafiles plugin, configuration details

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       beets:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8337 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /music Music library
    /downloads Non processed music

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it beets /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f beets
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' beets
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/beets:latest

    Versions

    • 15.01.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.05.19: - Add flac and mp3val binaries required for badfiles plugin.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag.
    • 01.03.19: - Switch to python3.
    • 07.02.19: - Add fftw-dev build dependency for chromaprint.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast.
    • 12.08.18: - Add requests pip package.
    • 04.03.18: - Upgrade mp3gain to 1.6.1.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 27.12.17: - Add beautifulsoup4 pip package.
    • 06.12.17: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 16.01.17: - Add packages required for replaygain.
    • 24.12.16: - Add beets-copyartifacts plugin.
    • 07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib
    • 14.10.16: - Add version layer information.
    • 01.10.16: - Add nano and editor variable to allow editing of the config from the container command line.
    • 30.09.16: - Fix umask.
    • 24.09.16: - Rebase to alpine linux.
    • 10.09.16: - Add layer badges to README.
    • 05.01.16: - Change ffpmeg repository, other version crashes container
    • 06.11.15: - Initial Release
    • 29.11.15: - Take out term setting, causing issues with key entry for some users
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it beets /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f beets
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' beets
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/beets:latest

    Versions

    • 15.01.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.05.19: - Add flac and mp3val binaries required for badfiles plugin.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag.
    • 01.03.19: - Switch to python3.
    • 07.02.19: - Add fftw-dev build dependency for chromaprint.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast.
    • 12.08.18: - Add requests pip package.
    • 04.03.18: - Upgrade mp3gain to 1.6.1.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 27.12.17: - Add beautifulsoup4 pip package.
    • 06.12.17: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 16.01.17: - Add packages required for replaygain.
    • 24.12.16: - Add beets-copyartifacts plugin.
    • 07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib
    • 14.10.16: - Add version layer information.
    • 01.10.16: - Add nano and editor variable to allow editing of the config from the container command line.
    • 30.09.16: - Fix umask.
    • 24.09.16: - Rebase to alpine linux.
    • 10.09.16: - Add layer badges to README.
    • 05.01.16: - Change ffpmeg repository, other version crashes container
    • 06.11.15: - Initial Release
    • 29.11.15: - Take out term setting, causing issues with key entry for some users
    \ No newline at end of file diff --git a/images/docker-blender/index.html b/images/docker-blender/index.html index 80f4785e47..94ef3d8602 100644 --- a/images/docker-blender/index.html +++ b/images/docker-blender/index.html @@ -1,4 +1,4 @@ - blender - LinuxServer.io

    linuxserver/blender

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Hardware Acceleration

    This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container.

    Intel/ATI/AMD

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri
    + blender - LinuxServer.io       

    linuxserver/blender

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Hardware Acceleration

    This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container.

    Intel/ATI/AMD

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri
     
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    Arm Devices

    Arm devices can run this image, but generally should not mount in /dev/dri. The OpenGL ES version is not high enough to run Blender. The program can run on these platforms though, leveraging CPU LLVMPipe rendering.

    Due to lack of arm32/64 binaries from the upstream project, our arm32/64 images install the latest version from the ubuntu repo, which is usually behind and thus the version the image is tagged with does not match the version contained.

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -36,4 +36,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Blender desktop gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/
    KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores local files and settings

    Device Mappings (--device)

    Parameter Function
    /dev/dri Add this for hardware acceleration (Linux hosts only)

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it blender /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f blender
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' blender
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/blender:latest

    Versions

    • 13.12.22: - Rebase to Jammy, migrate to s6v3.
    • 06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind.
    • 12.03.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it blender /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f blender
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' blender
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/blender:latest

    Versions

    • 13.12.22: - Rebase to Jammy, migrate to s6v3.
    • 06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind.
    • 12.03.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-boinc/index.html b/images/docker-boinc/index.html index d16f8bf6fc..dca54f4733 100644 --- a/images/docker-boinc/index.html +++ b/images/docker-boinc/index.html @@ -1,4 +1,4 @@ - boinc - LinuxServer.io

    linuxserver/boinc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View.

    Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them.

    GPU Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + boinc - LinuxServer.io       

    linuxserver/boinc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View.

    Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them.

    GPU Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       boinc:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Boinc desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    PASSWORD= Optionally set a password for the gui.

    Volume Mappings (-v)

    Volume Function
    /config Where BOINC should store its database and config.

    Device Mappings (--device)

    Parameter Function
    /dev/dri Only needed if you want to use your Intel GPU (vaapi).

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it boinc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f boinc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' boinc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/boinc:latest

    Versions

    • 14.11.22: - Fix opencl driver.
    • 18.09.22: - Rebase to jammy.
    • 24.02.22: - Rebase to focal.
    • 31.01.22: - Improve device permissions setting verbosity.
    • 23.03.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 01.04.20: - Install boinc from ppa.
    • 17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image.
    • 16.03.20: - Clean up old pid files.
    • 15.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it boinc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f boinc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' boinc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/boinc:latest

    Versions

    • 14.11.22: - Fix opencl driver.
    • 18.09.22: - Rebase to jammy.
    • 24.02.22: - Rebase to focal.
    • 31.01.22: - Improve device permissions setting verbosity.
    • 23.03.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 01.04.20: - Install boinc from ppa.
    • 17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image.
    • 16.03.20: - Clean up old pid files.
    • 15.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-booksonic-air/index.html b/images/docker-booksonic-air/index.html index f0760f88f5..1c1c64ba5a 100644 --- a/images/docker-booksonic-air/index.html +++ b/images/docker-booksonic-air/index.html @@ -1,4 +1,4 @@ - booksonic-air - LinuxServer.io

    linuxserver/booksonic-air

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable booksonic-air releases

    Application Setup

    Whilst this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + booksonic-air - LinuxServer.io       

    linuxserver/booksonic-air

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable booksonic-air releases

    Application Setup

    Whilst this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       booksonic-air:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4040 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CONTEXT_PATH=url-base Base url for use with reverse proxies etc.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /audiobooks Audiobooks.
    /podcasts Podcasts.
    /othermedia Other media.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it booksonic-air /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic-air
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' booksonic-air
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/booksonic-air:latest

    Versions

    • 18.04.22: - Rebase to Alpine 3.15.
    • 15.09.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it booksonic-air /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic-air
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' booksonic-air
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/booksonic-air:latest

    Versions

    • 18.04.22: - Rebase to Alpine 3.15.
    • 15.09.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-booksonic/index.html b/images/docker-booksonic/index.html index f6f2f13f0b..244894346b 100644 --- a/images/docker-booksonic/index.html +++ b/images/docker-booksonic/index.html @@ -1,4 +1,4 @@ - booksonic - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air

    linuxserver/booksonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable Booksonic releases
    prerelease Booksonic Pre-releases

    Application Setup

    Default user/pass is admin/admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + booksonic - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air

    linuxserver/booksonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable Booksonic releases
    prerelease Booksonic Pre-releases

    Application Setup

    Default user/pass is admin/admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       booksonic:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4040 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CONTEXT_PATH=url-base Base url for use with reverse proxies etc.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /audiobooks Audiobooks.
    /podcasts Podcasts.
    /othermedia Other media.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it booksonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' booksonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/booksonic

    Versions

    • 06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air
    • 11.08.20: - Changed upstream github repo location
    • 22.12.19: - Revert to pulling in external war, upgrade jetty.
    • 30.04.19: - Switching to build war from source, use stable booksonic releases.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 16.01.19: - Adding pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 06.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 13.12.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it booksonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' booksonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/booksonic

    Versions

    • 06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air
    • 11.08.20: - Changed upstream github repo location
    • 22.12.19: - Revert to pulling in external war, upgrade jetty.
    • 30.04.19: - Switching to build war from source, use stable booksonic releases.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 16.01.19: - Adding pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 06.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 13.12.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-bookstack/index.html b/images/docker-bookstack/index.html index e7b6d5e0a6..70c65f4454 100644 --- a/images/docker-bookstack/index.html +++ b/images/docker-bookstack/index.html @@ -1,4 +1,4 @@ - bookstack - LinuxServer.io

    linuxserver/bookstack

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.

    Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.

    For more information on BookStack visit their website and check it out: https://www.bookstackapp.com

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The default username is admin@admin.com with the password of password, access the container at http://dockerhost:6875.

    This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/.

    If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the APP_URL environment variable is set to your external domain, or it will not work

    Documentation for BookStack can be found at https://www.bookstackapp.com/docs/

    Advanced Users (full control over the .env file)

    If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.

    When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.

    PDF Rendering

    wkhtmltopdf is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/.

    The path to wkhtmltopdf in this image to include in your .env file is /usr/bin/wkhtmltopdf.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + bookstack - LinuxServer.io       

    linuxserver/bookstack

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.

    Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.

    For more information on BookStack visit their website and check it out: https://www.bookstackapp.com

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The default username is admin@admin.com with the password of password, access the container at http://dockerhost:6875.

    This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/.

    If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the APP_URL environment variable is set to your external domain, or it will not work

    Documentation for BookStack can be found at https://www.bookstackapp.com/docs/

    Advanced Users (full control over the .env file)

    If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.

    When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.

    PDF Rendering

    wkhtmltopdf is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/.

    The path to wkhtmltopdf in this image to include in your .env file is /usr/bin/wkhtmltopdf.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2"
     services:
       bookstack:
    @@ -52,4 +52,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 will map the container's port 80 to port 6875 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    APP_URL= for specifying the IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com
    DB_HOST=<yourdbhost> for specifying the database host
    DB_PORT=<yourdbport> for specifying the database port if not default 3306
    DB_USER=<yourdbuser> for specifying the database user
    DB_PASS=<yourdbpass> for specifying the database password (non-alphanumeric passwords must be properly escaped.)
    DB_DATABASE=bookstackapp for specifying the database to be used

    Volume Mappings (-v)

    Volume Function
    /config this will store any uploaded data on the docker host

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it bookstack /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bookstack
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bookstack:latest

    Versions

    • 05.01.23: - Fix db password setting (sed escape &).
    • 21.12.22: - Update db info in .env file when env vars are updated.
    • 10.10.22: - Remove password escape logic which caused problems for a small subset of users.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 14.03.22: - Add symlinks for theme support.
    • 11.07.21: - Rebase to Alpine 3.14.
    • 12.01.21: - Remove unused requirement, as of release 0.31.0.
    • 17.12.20: - Make APP_URL var required (upstream changes).
    • 17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 26.07.19: - Use old version of tidyhtml pending upstream fixes.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 14.06.19: - Add wkhtmltopdf to image for PDF rendering.
    • 20.04.19: - Rebase to Alpine 3.9, add MySQL init logic.
    • 22.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.01.19: - Added php7-curl
    • 04.11.18: - Added php7-ldap
    • 15.10.18: - Changed functionality for advanced users
    • 08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files
    • 23.09.28: - Updates pre-release
    • 02.07.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it bookstack /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bookstack
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bookstack:latest

    Versions

    • 05.01.23: - Fix db password setting (sed escape &).
    • 21.12.22: - Update db info in .env file when env vars are updated.
    • 10.10.22: - Remove password escape logic which caused problems for a small subset of users.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 14.03.22: - Add symlinks for theme support.
    • 11.07.21: - Rebase to Alpine 3.14.
    • 12.01.21: - Remove unused requirement, as of release 0.31.0.
    • 17.12.20: - Make APP_URL var required (upstream changes).
    • 17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 26.07.19: - Use old version of tidyhtml pending upstream fixes.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 14.06.19: - Add wkhtmltopdf to image for PDF rendering.
    • 20.04.19: - Rebase to Alpine 3.9, add MySQL init logic.
    • 22.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.01.19: - Added php7-curl
    • 04.11.18: - Added php7-ldap
    • 15.10.18: - Changed functionality for advanced users
    • 08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files
    • 23.09.28: - Updates pre-release
    • 02.07.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-budge/index.html b/images/docker-budge/index.html index 355795ef99..788d0e0aad 100644 --- a/images/docker-budge/index.html +++ b/images/docker-budge/index.html @@ -1,4 +1,4 @@ - budge - LinuxServer.io

    linuxserver/budge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    budge is an open source 'budgeting with envelopes' personal finance app.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the web gui at http://SERVERIP:PORT

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + budge - LinuxServer.io       

    linuxserver/budge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    budge is an open source 'budgeting with envelopes' personal finance app.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the web gui at http://SERVERIP:PORT

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       budge:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui
    443 https gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York

    Volume Mappings (-v)

    Volume Function
    /config Persistent config files

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it budge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f budge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' budge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/budge:latest

    Versions

    • 29.11.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 04.15.22: - Added NPM command to run db migrations.
    • 02.05.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it budge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f budge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' budge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/budge:latest

    Versions

    • 29.11.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 04.15.22: - Added NPM command to run db migrations.
    • 02.05.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-calibre-web/index.html b/images/docker-calibre-web/index.html index 115913f835..1fc523d377 100644 --- a/images/docker-calibre-web/index.html +++ b/images/docker-calibre-web/index.html @@ -1,4 +1,4 @@ - calibre-web - LinuxServer.io

    linuxserver/calibre-web

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.

    This software is a fork of library and licensed under the GPL v3 License.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Releases of Calibre-Web
    nightly Commits to the master branch of Calibre-Web

    Application Setup

    Webui can be found at http://your-ip:8083

    On the initial setup screen, enter /books as your calibre library location.

    Default admin login: Username: admin Password: admin123

    Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar

    64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to /usr/bin/ebook-convert

    This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to /usr/bin/kepubify

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + calibre-web - LinuxServer.io       

    linuxserver/calibre-web

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.

    This software is a fork of library and licensed under the GPL v3 License.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Releases of Calibre-Web
    nightly Commits to the master branch of Calibre-Web

    Application Setup

    Webui can be found at http://your-ip:8083

    On the initial setup screen, enter /books as your calibre library location.

    Default admin login: Username: admin Password: admin123

    Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar

    64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to /usr/bin/ebook-convert

    This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to /usr/bin/kepubify

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       calibre-web:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8083 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    DOCKER_MODS=linuxserver/mods:universal-calibre #optional & x86-64 only Adds the ability to perform ebook conversion
    OAUTHLIB_RELAX_TOKEN_SCOPE=1 Optionally set this to allow Google OAUTH to work

    Volume Mappings (-v)

    Volume Function
    /config Where calibre-web stores the internal database and config.
    /books Where your preexisting calibre database is located.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it calibre-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/calibre-web:latest

    Versions

    • 27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev.
    • 20.12.22: - Improve init script and prevent harmless error.
    • 19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies.
    • 04.11.21: - Update pip arguments to ignore distro installed packages.
    • 24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support.
    • 17.05.21: - Add linuxserver wheel index.
    • 10.02.21: - Add libxrandr2
    • 25.01.21: - Add nightly tag
    • 19.01.21: - Add python3-pkg-resources
    • 13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 12.10.20: - Add libxi6
    • 12.07.20: - Add kepubify for arm64v8
    • 05.06.20: - Add kepubify for x86-64 and arm32v7
    • 06.05.20: - Add libxslt1.1 and update ImageMagick policy
    • 19.01.20: - Adding LDAP libs.
    • 13.10.19: - Migrate to Python3.
    • 01.08.19: - Add libxcomposite1.
    • 13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar.
    • 02.06.19: - Rebase to Ubuntu Bionic & add Gdrive support.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 03.01.19: - Remove guest user from default app.db.
    • 16.08.18: - Rebase to alpine 3.8.
    • 03.07.18: - New build pushed, all versions below 67 have vulnerability.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 06.12.17: - Rebase to alpine 3.7.
    • 27.11.17: - Use cpu core counting routine to speed up build time.
    • 24.07.17: - Curl version for imagemagick.
    • 17.07.17: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it calibre-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/calibre-web:latest

    Versions

    • 27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev.
    • 20.12.22: - Improve init script and prevent harmless error.
    • 19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies.
    • 04.11.21: - Update pip arguments to ignore distro installed packages.
    • 24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support.
    • 17.05.21: - Add linuxserver wheel index.
    • 10.02.21: - Add libxrandr2
    • 25.01.21: - Add nightly tag
    • 19.01.21: - Add python3-pkg-resources
    • 13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 12.10.20: - Add libxi6
    • 12.07.20: - Add kepubify for arm64v8
    • 05.06.20: - Add kepubify for x86-64 and arm32v7
    • 06.05.20: - Add libxslt1.1 and update ImageMagick policy
    • 19.01.20: - Adding LDAP libs.
    • 13.10.19: - Migrate to Python3.
    • 01.08.19: - Add libxcomposite1.
    • 13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar.
    • 02.06.19: - Rebase to Ubuntu Bionic & add Gdrive support.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 03.01.19: - Remove guest user from default app.db.
    • 16.08.18: - Rebase to alpine 3.8.
    • 03.07.18: - New build pushed, all versions below 67 have vulnerability.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 06.12.17: - Rebase to alpine 3.7.
    • 27.11.17: - Use cpu core counting routine to speed up build time.
    • 24.07.17: - Curl version for imagemagick.
    • 17.07.17: - Initial release.
    \ No newline at end of file diff --git a/images/docker-calibre/index.html b/images/docker-calibre/index.html index 6af676e67b..b3782cb962 100644 --- a/images/docker-calibre/index.html +++ b/images/docker-calibre/index.html @@ -1,4 +1,4 @@ - calibre - LinuxServer.io

    linuxserver/calibre

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Calibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    This image sets up the calibre desktop app and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to 8081 although it will then be available at the host mapped port for external access.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + calibre - LinuxServer.io       

    linuxserver/calibre

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Calibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    This image sets up the calibre desktop app and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to 8081 although it will then be available at the host mapped port for external access.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       calibre:
    @@ -34,4 +34,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Calibre desktop gui.
    8081 Calibre webserver gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    PASSWORD= Optionally set a password for the gui.
    CLI_ARGS= Optionally pass cli start arguments to calibre.

    Volume Mappings (-v)

    Volume Function
    /config Where calibre should store its database and library.

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it calibre /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/calibre:latest

    Versions

    • 19.10.22: - Set the window title to Calibre. Remove websocat as it is now handled properly in the baseimage.
    • 18.10.22: - Deprecate Arch branch.
    • 07.10.22: - Start calibre window maximized.
    • 16.09.22: - Rebase to jammy.
    • 24.07.22: - Add arm64 build for master branch.
    • 11.07.22: - Update dependencies for Calibre 6.
    • 28.05.22: - Rebase to focal.
    • 31.03.22: - Fix umask.
    • 28.02.22: - Add speech support to bionic image.
    • 05.01.22: - Add arch branch for arm platforms.
    • 20.04.21: - Fix the HOME folder.
    • 19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables.
    • 18.04.21: - Start calibre on container start rather than gui connect.
    • 15.04.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 25.09.20: - Switch to python3, add various new dependencies for calibre 5.0.
    • 10.05.19: - Add new env var CLI_ARGS to pass start arguments to calibre.
    • 18.03.19: - Let Calibre access environment variables, add optional umask setting.
    • 23.10.19: - Remove reccomended deps and zenity for character compatibility.
    • 18.10.19: - Add python-xdg.
    • 08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding.
    • 04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4.
    • 08.08.19: - Add zenity for international character support in dialog boxes.
    • 12.07.19: - Download binary from calibre website instead of github.
    • 29.04.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it calibre /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/calibre:latest

    Versions

    • 19.10.22: - Set the window title to Calibre. Remove websocat as it is now handled properly in the baseimage.
    • 18.10.22: - Deprecate Arch branch.
    • 07.10.22: - Start calibre window maximized.
    • 16.09.22: - Rebase to jammy.
    • 24.07.22: - Add arm64 build for master branch.
    • 11.07.22: - Update dependencies for Calibre 6.
    • 28.05.22: - Rebase to focal.
    • 31.03.22: - Fix umask.
    • 28.02.22: - Add speech support to bionic image.
    • 05.01.22: - Add arch branch for arm platforms.
    • 20.04.21: - Fix the HOME folder.
    • 19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables.
    • 18.04.21: - Start calibre on container start rather than gui connect.
    • 15.04.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 25.09.20: - Switch to python3, add various new dependencies for calibre 5.0.
    • 10.05.19: - Add new env var CLI_ARGS to pass start arguments to calibre.
    • 18.03.19: - Let Calibre access environment variables, add optional umask setting.
    • 23.10.19: - Remove reccomended deps and zenity for character compatibility.
    • 18.10.19: - Add python-xdg.
    • 08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding.
    • 04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4.
    • 08.08.19: - Add zenity for international character support in dialog boxes.
    • 12.07.19: - Download binary from calibre website instead of github.
    • 29.04.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-cardigann/index.html b/images/docker-cardigann/index.html index 4a08376eac..cc46915dd3 100644 --- a/images/docker-cardigann/index.html +++ b/images/docker-cardigann/index.html @@ -1,4 +1,4 @@ - cardigann - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett.

    linuxserver/cardigann

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + cardigann - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett.

    linuxserver/cardigann

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=cardigann \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -26,4 +26,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5060 The port for the Cardigann webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    SOCKS_PROXY=IP:PORT for using a socks proxy (optional)
    HTTP_PROXY=IP:PORT for using a HTTP proxy (optional)

    Volume Mappings (-v)

    Volume Function
    /config Cardigann config

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    Access the webui at <your-ip>:5060, for more information check out Cardigann.

    By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080

    The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ).

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cardigann /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cardigann
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cardigann
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/cardigann

    Versions

    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.02.19: - Multi arch images and pipeline build logic
    • 14.01.19: - Add multi arch and pipeline logic
    • 22.08.18: - Rebase to alpine 3.8
    • 06.05.18: - Use buildstage in Dockerfile
    • 06.12.17: - Rebase to alpine 3.7
    • 12.08.17: - Add npm install to build stage
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 03.11.16: - Compiled using sstamoulis' method
    • 01.11.16: - Initial Release
    \ No newline at end of file +

    Application Setup

    Access the webui at <your-ip>:5060, for more information check out Cardigann.

    By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080

    The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ).

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cardigann /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cardigann
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cardigann
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/cardigann

    Versions

    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.02.19: - Multi arch images and pipeline build logic
    • 14.01.19: - Add multi arch and pipeline logic
    • 22.08.18: - Rebase to alpine 3.8
    • 06.05.18: - Use buildstage in Dockerfile
    • 06.12.17: - Rebase to alpine 3.7
    • 12.08.17: - Add npm install to build stage
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 03.11.16: - Compiled using sstamoulis' method
    • 01.11.16: - Initial Release
    \ No newline at end of file diff --git a/images/docker-changedetection.io/index.html b/images/docker-changedetection.io/index.html index a023649a5d..936ad46a5e 100644 --- a/images/docker-changedetection.io/index.html +++ b/images/docker-changedetection.io/index.html @@ -1,4 +1,4 @@ - changedetection.io - LinuxServer.io

    linuxserver/changedetection.io

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Changedetection.io provides free, open-source web page monitoring, notification and change detection.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is accessible at http://SERVERIP:PORT

    Please note that this image does not contain the Playwright content fetcher due to a lack of support for muslc-based systems. If you require this feature please use Selenium or the official container

    For more info read the wiki.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + changedetection.io - LinuxServer.io       

    linuxserver/changedetection.io

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Changedetection.io provides free, open-source web page monitoring, notification and change detection.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is accessible at http://SERVERIP:PORT

    Please note that this image does not contain the Playwright content fetcher due to a lack of support for muslc-based systems. If you require this feature please use Selenium or the official container

    For more info read the wiki.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       changedetection:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5000 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    BASE_URL= Specify the full URL (including protocol) when running behind a reverse proxy

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it changedetection.io /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f changedetection.io
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' changedetection.io
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/changedetection.io:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 09.10.22: - Add make as build dep to fix pip jq build on armhf.
    • 07.08.22: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it changedetection.io /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f changedetection.io
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' changedetection.io
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/changedetection.io:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 09.10.22: - Add make as build dep to fix pip jq build on armhf.
    • 07.08.22: - Initial release.
    \ No newline at end of file diff --git a/images/docker-chevereto/index.html b/images/docker-chevereto/index.html index b4fcb48ee5..3392dae643 100644 --- a/images/docker-chevereto/index.html +++ b/images/docker-chevereto/index.html @@ -1,4 +1,4 @@ - chevereto - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/

    linuxserver/chevereto

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Chevereto-Free now has a maintainer!

    ~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~

    Access the WebUI at :443. For more information, check out Chevereto Free.

    Chevereto requires a MariaDB database, we have an image available here if you require it.

    If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set set_real_ip_from to match the IP address/address block of your proxy server(s).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + chevereto - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/

    linuxserver/chevereto

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Chevereto-Free now has a maintainer!

    ~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~

    Access the WebUI at :443. For more information, check out Chevereto Free.

    Chevereto requires a MariaDB database, we have an image available here if you require it.

    If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set set_real_ip_from to match the IP address/address block of your proxy server(s).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2"
     services:
       chevereto:
    @@ -46,4 +46,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui
    443 https gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=<TZ> Timezone (i.e., America/New_York)

    Volume Mappings (-v)

    Volume Function
    /config config directory volume mapping
    /data data directory volume mapping

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it chevereto /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f chevereto
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' chevereto
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/chevereto:latest

    Versions

    • 13.06.22: - Deprecate.
    • 13.11.21: - Add composer to fix missing dependencies.
    • 21.10.21: - Removed deprecation warning, change reposiory links.
    • 22.07.21: - Rebase to Alpine 3.14.
    • 28.08.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it chevereto /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f chevereto
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' chevereto
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/chevereto:latest

    Versions

    • 13.06.22: - Deprecate.
    • 13.11.21: - Add composer to fix missing dependencies.
    • 21.10.21: - Removed deprecation warning, change reposiory links.
    • 22.07.21: - Rebase to Alpine 3.14.
    • 28.08.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ci/index.html b/images/docker-ci/index.html index 9dd2c1d645..40d8d4f19b 100644 --- a/images/docker-ci/index.html +++ b/images/docker-ci/index.html @@ -1,4 +1,4 @@ - ci - LinuxServer.io

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    Forum Linuserver.io forum
    IRC freenode at #linuxserver.io more information at:- IRC
    Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast

    linuxserver/ci

    This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports

    The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built.

    Usage

    The container can be run locally, but it is meant to be integrated into the LinuxServer build process:

    sudo docker run --rm -i \
    + ci - LinuxServer.io       

    ci

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    Forum Linuserver.io forum
    IRC freenode at #linuxserver.io more information at:- IRC
    Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast

    linuxserver/ci

    This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports

    The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built.

    Usage

    The container can be run locally, but it is meant to be integrated into the LinuxServer build process:

    sudo docker run --rm -i \
     -v /var/run/docker.sock:/var/run/docker.sock \
     -e IMAGE="linuxserver/<dockerimage>" \
     -e TAGS="<single tag or array seperated by |>" \
    @@ -19,4 +19,4 @@
     -e CI_S6_VERBOSITY=<optional, Updates the S6_VERBOSITY env. Defaults to '2'>
     -t lsiodev/ci:latest \
     python3 test_build.py
    -

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file +

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-clarkson/index.html b/images/docker-clarkson/index.html index 878f3c6c89..d9e8553a05 100644 --- a/images/docker-clarkson/index.html +++ b/images/docker-clarkson/index.html @@ -1,4 +1,4 @@ - clarkson - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond

    linuxserver/clarkson

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container.

    It is preferred if you create the clarkson schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the "clarkson" user will not have permission to create the schema on your behalf. You can, of course, use the "root" user, which has the ability to create schemas automatically, but this is not recommended.

    CREATE SCHEMA `clarkson`;
    + clarkson - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond

    linuxserver/clarkson

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container.

    It is preferred if you create the clarkson schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the "clarkson" user will not have permission to create the schema on your behalf. You can, of course, use the "root" user, which has the ability to create schemas automatically, but this is not recommended.

    CREATE SCHEMA `clarkson`;
     CREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword';
     GRANT ALL ON `clarkson`.* TO 'clarkson_user';
     

    Once running, the container will run an initial MySQL migration, which populates the schema with all tables and procedures. The application will start immediately afterwards. You will need to register an initial user, of which will be the admin of the application. All subsequent users will be standard users. You can disable registrations after the fact by recreating the container with the ENABLE_REGISTRATIONS flag set to false. This will not hide the "Register" link, but will disable the functionality.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    MYSQL_HOST=<mysql_host> Points the backend to the MySQL database. This can be either a docker hostname or an IP.
    MYSQL_USERNAME=<mysql_username> The user with access to the clarkson schema.
    MYSQL_PASSWORD=<mysql_password> The password for the user.
    ENABLE_REGISTRATIONS=<true/false> Defaults to false. If set to true, allows new users to register.
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it clarkson /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f clarkson
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' clarkson
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/clarkson

    Versions

    • 19.01.22: - Deprecate.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.03.19: - Updating runtime dependancies for the JRE.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine linux 3.8.
    • 19.02.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it clarkson /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f clarkson
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' clarkson
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/clarkson

    Versions

    • 19.01.22: - Deprecate.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.03.19: - Updating runtime dependancies for the JRE.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine linux 3.8.
    • 19.02.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-cloud9/index.html b/images/docker-cloud9/index.html index 58ed49422d..3ae54ad6a1 100644 --- a/images/docker-cloud9/index.html +++ b/images/docker-cloud9/index.html @@ -1,4 +1,4 @@ - cloud9 - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server

    linuxserver/cloud9

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Docker and Compose environment pre-installed
    go Basic Golang environment pre-installed
    nodejs Current stable NodeJS/NPM environment pre-installed
    python Current Python3 environment pre-installed
    ruby Current Ruby environment pre-installed

    Application Setup

    Access the webui at http://your-ip:8000, for more information check out here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + cloud9 - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server

    linuxserver/cloud9

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Docker and Compose environment pre-installed
    go Basic Golang environment pre-installed
    nodejs Current stable NodeJS/NPM environment pre-installed
    python Current Python3 environment pre-installed
    ruby Current Ruby environment pre-installed

    Application Setup

    Access the webui at http://your-ip:8000, for more information check out here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       cloud9:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 The port for the Cloud9 web interface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    GITURL=https://github.com/linuxserver/docker-cloud9.git Specify a git repo to checkout on first startup
    USERNAME= Optionally specify a username for http auth
    PASSWORD= Optionally specify a password for http auth (if USERNAME and PASSWORD are not set, there will be no http auth)

    Volume Mappings (-v)

    Volume Function
    /code Optionally if you want to mount up a local folder of code instead of checking out
    /var/run/docker.sock Needed if you plan to use Docker or compose commands

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cloud9 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cloud9
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cloud9
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/cloud9:latest

    Versions

    • 23.06.22: - Deprecate image.
    • 24.06.21: - Use prebuilt compose binaries for the linuxserver repo.
    • 07.02.20: - Add optional http auth.
    • 02.06.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cloud9 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cloud9
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cloud9
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/cloud9:latest

    Versions

    • 23.06.22: - Deprecate image.
    • 24.06.21: - Use prebuilt compose binaries for the linuxserver repo.
    • 07.02.20: - Add optional http auth.
    • 02.06.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-code-server/index.html b/images/docker-code-server/index.html index d773d5054a..42af574a80 100644 --- a/images/docker-code-server/index.html +++ b/images/docker-code-server/index.html @@ -1,4 +1,4 @@ - code-server - LinuxServer.io

    linuxserver/code-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:8443. For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name "username"
    + code-server - LinuxServer.io       

    linuxserver/code-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:8443. For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name "username"
     git config --global user.email "email address"
     

    Hashed code-server password

    How to create the hashed password.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -39,4 +39,4 @@ git config --global 

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8443 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    PASSWORD=password Optional web gui password, if PASSWORD or HASHED_PASSWORD is not provided, there will be no auth.
    HASHED_PASSWORD= Optional web gui password, overrides PASSWORD, instructions on how to create it is below.
    SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the code-server terminal with the specified password.
    SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed.
    PROXY_DOMAIN=code-server.my.domain If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation
    DEFAULT_WORKSPACE=/config/workspace If this optional variable is set, code-server will open this directory by default

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it code-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f code-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest

    Versions

    • 05.10.22: - Install recommended deps to maintain parity with the older images.
    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 20.02.22: - Install using the official tarballs.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 06.12.21: - Add DEFAULT_WORKSPACE env var.
    • 29.11.21: - Rebase to Ubuntu focal.
    • 16.09.21: - Fix slow chown on large workspace (contents of workspace folder no longer chowned).
    • 11.07.21: - Bump node to 14 to fix builds
    • 08.05.21: - Fix doc link
    • 04.02.20: - Allow setting gui password via hash using env var HASHED_PASSWORD.
    • 23.12.20: - Allow setting sudo password via hash using env var SUDO_PASSWORD_HASH.
    • 29.05.20: - Add --domain-proxy support.
    • 21.05.20: - Shrink images, install via yarn, fix arm32v7 build.
    • 18.05.20: - Switch to multi-arch images, install via npm.
    • 29.04.20: - Update start arguments.
    • 01.04.20: - Structural changes required for v3.
    • 17.01.20: - Fix artifact url retrieval from github.
    • 24.10.19: - Upgrade to v2 builds.
    • 28.09.19: - Update project logo.
    • 21.09.19: - Add development builds/tag.
    • 09.07.19: - Add optional sudo access.
    • 01.07.19: - Add nano.
    • 24.06.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it code-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f code-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' code-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/code-server:latest

    Versions

    • 05.10.22: - Install recommended deps to maintain parity with the older images.
    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 20.02.22: - Install using the official tarballs.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 06.12.21: - Add DEFAULT_WORKSPACE env var.
    • 29.11.21: - Rebase to Ubuntu focal.
    • 16.09.21: - Fix slow chown on large workspace (contents of workspace folder no longer chowned).
    • 11.07.21: - Bump node to 14 to fix builds
    • 08.05.21: - Fix doc link
    • 04.02.20: - Allow setting gui password via hash using env var HASHED_PASSWORD.
    • 23.12.20: - Allow setting sudo password via hash using env var SUDO_PASSWORD_HASH.
    • 29.05.20: - Add --domain-proxy support.
    • 21.05.20: - Shrink images, install via yarn, fix arm32v7 build.
    • 18.05.20: - Switch to multi-arch images, install via npm.
    • 29.04.20: - Update start arguments.
    • 01.04.20: - Structural changes required for v3.
    • 17.01.20: - Fix artifact url retrieval from github.
    • 24.10.19: - Upgrade to v2 builds.
    • 28.09.19: - Update project logo.
    • 21.09.19: - Add development builds/tag.
    • 09.07.19: - Add optional sudo access.
    • 01.07.19: - Add nano.
    • 24.06.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-codiad/index.html b/images/docker-codiad/index.html index 776b8e8624..44416d15dd 100644 --- a/images/docker-codiad/index.html +++ b/images/docker-codiad/index.html @@ -1,4 +1,4 @@ - codiad - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9

    linuxserver/codiad

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + codiad - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9

    linuxserver/codiad

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=codiad \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -24,4 +24,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where Codiad stores data.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it codiad /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codiad
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' codiad
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/codiad

    Versions

    • 10.06.19: - Deprecate Image.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9, adding ssh client.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 26.09.18: - Add sed to init file to configure projects folder correctly.
    • 04.09.18: - Rebase to alpine linux 3.8.
    • 09.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 06.11.15: - Initial Release.
    \ No newline at end of file +

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it codiad /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codiad
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' codiad
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/codiad

    Versions

    • 10.06.19: - Deprecate Image.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9, adding ssh client.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 26.09.18: - Add sed to init file to configure projects folder correctly.
    • 04.09.18: - Rebase to alpine linux 3.8.
    • 09.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 06.11.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-codimd/index.html b/images/docker-codimd/index.html index 140998561c..b6c06e79df 100644 --- a/images/docker-codimd/index.html +++ b/images/docker-codimd/index.html @@ -1,4 +1,4 @@ - codimd - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/codimd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Codimd gives you access to all your files wherever you are.

    CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    version: "3"
    + codimd - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/codimd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Codimd gives you access to all your files wherever you are.

    CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    version: "3"
     services:
       mariadb:
         image: linuxserver/mariadb:latest
    @@ -50,4 +50,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 If you wish to access this container from http://{IP}:${PORT}` this must be left unchanged.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    DB_HOST=<hostname or ip> Host address of mysql database
    DB_PORT=3306 Port to access mysql database default is 3306
    DB_USER=codimd Database user
    DB_PASS=<secret password> Database password
    DB_NAME=codimd Database name
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config CodiMD config and configurable files

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc.

    CodiMD web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT)

    Full list of CodiMD options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it codimd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codimd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' codimd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/codimd

    Versions

    • 22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc.
    • 23.05.19: - Initial release
    \ No newline at end of file +

    Application Setup

    THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc.

    CodiMD web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT)

    Full list of CodiMD options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it codimd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codimd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' codimd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/codimd

    Versions

    • 22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc.
    • 23.05.19: - Initial release
    \ No newline at end of file diff --git a/images/docker-cops/index.html b/images/docker-cops/index.html index c05efad621..ba47c204a4 100644 --- a/images/docker-cops/index.html +++ b/images/docker-cops/index.html @@ -1,4 +1,4 @@ - cops - LinuxServer.io

    linuxserver/cops

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cops by Sébastien Lucas, stands for Calibre OPDS (and HTML) Php Server.

    COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices.

    Changes in your Calibre library are reflected immediately in your COPS pages.

    See : COPS's home for more details.

    Don't forget to check the Wiki.

    Why? (taken from the author's site)

    In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.

    That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).

    I initially thought of Calibre2OPDS but as it generate static file no search was possible.

    Later I added an simple HTML catalog that should be usable on my Kobo.

    So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code.

    If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<docker host ip>:80. For connecting via OPDS on a mobile device use http://<docker host ip>:80/feed.php. It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above).

    The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + cops - LinuxServer.io       

    linuxserver/cops

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Cops by Sébastien Lucas, stands for Calibre OPDS (and HTML) Php Server.

    COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices.

    Changes in your Calibre library are reflected immediately in your COPS pages.

    See : COPS's home for more details.

    Don't forget to check the Wiki.

    Why? (taken from the author's site)

    In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.

    That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).

    I initially thought of Calibre2OPDS but as it generate static file no search was possible.

    Later I added an simple HTML catalog that should be usable on my Kobo.

    So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code.

    If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<docker host ip>:80. For connecting via OPDS on a mobile device use http://<docker host ip>:80/feed.php. It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above).

    The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       cops:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config COPS Application Data.
    /books Calibre metadata.db location.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cops /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cops
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cops
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/cops:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.11.20: - Pin composer version to 1.10.17.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multiarch and pipeline logic.
    • 21.08.18: - Rebase to alpine 3.8.
    • 02.07.18: - Add php7-ctype dependency.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.04.17: - Add composer packages, reduce layers.
    • 02.04.17: - Updated to version 1.1.0.
    • 05.02.17: - Updated to Alpine 3.5 & PHP7.
    • 24.10.16: - Updated to implement user based config.
    • 24.10.16: - Updated to version 1.0.1.
    • 14.10.16: - Add version layer information.
    • 28.09.16: - Add php5-zlib.
    • 11.09.16: - Add layer badges to README.
    • 29.08.16: - Add php5-opcache.
    • 28.08.16: - Add badges to README.
    • 12.08.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it cops /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cops
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' cops
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/cops:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.11.20: - Pin composer version to 1.10.17.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multiarch and pipeline logic.
    • 21.08.18: - Rebase to alpine 3.8.
    • 02.07.18: - Add php7-ctype dependency.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.04.17: - Add composer packages, reduce layers.
    • 02.04.17: - Updated to version 1.1.0.
    • 05.02.17: - Updated to Alpine 3.5 & PHP7.
    • 24.10.16: - Updated to implement user based config.
    • 24.10.16: - Updated to version 1.0.1.
    • 14.10.16: - Add version layer information.
    • 28.09.16: - Add php5-zlib.
    • 11.09.16: - Add layer badges to README.
    • 29.08.16: - Add php5-opcache.
    • 28.08.16: - Add badges to README.
    • 12.08.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-couchpotato/index.html b/images/docker-couchpotato/index.html index f726d81fdb..3f31f1fd87 100644 --- a/images/docker-couchpotato/index.html +++ b/images/docker-couchpotato/index.html @@ -1,4 +1,4 @@ - couchpotato - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr

    linuxserver/couchpotato

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Access the webui at <your-ip>:5050, for more information check out CouchPotato.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + couchpotato - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr

    linuxserver/couchpotato

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    Access the webui at <your-ip>:5050, for more information check out CouchPotato.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       couchpotato:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5050 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Couchpotato Application Data.
    /downloads Downloads Folder.
    /movies Movie Share.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it couchpotato /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f couchpotato
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' couchpotato
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/couchpotato

    Versions

    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 10.06.19: - Add back unrar & unzip that were accidentally left out during rebase.
    • 06.06.19: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Multi-arch builds.
    • 16.08.18: - Rebase to alpine 3.8.
    • 06.11.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5.
    • 11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder).
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 12.11.15: - Misc Code Cleanup.
    • 02.10.15: - Change to python baseimage.
    • 28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it couchpotato /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f couchpotato
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' couchpotato
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/couchpotato

    Versions

    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 10.06.19: - Add back unrar & unzip that were accidentally left out during rebase.
    • 06.06.19: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Multi-arch builds.
    • 16.08.18: - Rebase to alpine 3.8.
    • 06.11.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5.
    • 11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder).
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 12.11.15: - Misc Code Cleanup.
    • 02.10.15: - Change to python baseimage.
    • 28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.
    \ No newline at end of file diff --git a/images/docker-daapd/index.html b/images/docker-daapd/index.html index 36db954b1e..ce5796b38c 100644 --- a/images/docker-daapd/index.html +++ b/images/docker-daapd/index.html @@ -1,4 +1,4 @@ - daapd - LinuxServer.io

    linuxserver/daapd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Map your music folder, open up itunes on the same LAN to see your music there.

    The web interface is available at http://<your ip>:3689

    For further setup options of remotes etc, check out the daapd website, Owntone.

    Enable spotify connect server

    Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts):

    mkfifo <music_folder>/spotify
    + daapd - LinuxServer.io       

    linuxserver/daapd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Map your music folder, open up itunes on the same LAN to see your music there.

    The web interface is available at http://<your ip>:3689

    For further setup options of remotes etc, check out the daapd website, Owntone.

    Enable spotify connect server

    Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts):

    mkfifo <music_folder>/spotify
     

    The spotify connect server should show up as the 'forked-daapd' device in your Spotify application.

    It is recommended to set the pipe_autostart option to true in your forked-daapd config.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Networking (--net)

    Parameter Function
    --net=host Shares host networking with container.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where daapd server stores its config and dbase files.
    /music Map to your music folder.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it daapd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f daapd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' daapd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/daapd:latest

    Versions

    • 31.05.22: - Make sure the user has access to the audio device.
    • 31.05.22: - Add new deps, flex and bison.
    • 12.02.22: - Rebase to Alpine 3.15.
    • 14.09.21: - Enabled librespot. Disabled spotify on ARMv7
    • 10.07.21: - Change of paths to work with the new package name, OwnTone.
    • 02.04.21: - Update upstream repo, again.
    • 30.03.21: - Update upstream repo.
    • 06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 20.08.18: - Rebase to alpine linux 3.8.
    • 09.06.18: - Use buildstage and update dependencies.
    • 05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26.
    • 25.02.18: - Query version before pull and build latest release.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 07.12.17: - Rebase to alpine linux 3.7.
    • 03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes.
    • 26.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 10.01.17: - Bump to 24.2.
    • 14.10.16: - Add version layer information.
    • 17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository.
    • 28.02.16: - Add chromecast support, bump dependency versions.
    • 04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set.
    • 17.12.15: - Add in spotify support.
    • 25.11.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it daapd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f daapd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' daapd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/daapd:latest

    Versions

    • 31.05.22: - Make sure the user has access to the audio device.
    • 31.05.22: - Add new deps, flex and bison.
    • 12.02.22: - Rebase to Alpine 3.15.
    • 14.09.21: - Enabled librespot. Disabled spotify on ARMv7
    • 10.07.21: - Change of paths to work with the new package name, OwnTone.
    • 02.04.21: - Update upstream repo, again.
    • 30.03.21: - Update upstream repo.
    • 06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 20.08.18: - Rebase to alpine linux 3.8.
    • 09.06.18: - Use buildstage and update dependencies.
    • 05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26.
    • 25.02.18: - Query version before pull and build latest release.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 07.12.17: - Rebase to alpine linux 3.7.
    • 03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes.
    • 26.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 10.01.17: - Bump to 24.2.
    • 14.10.16: - Add version layer information.
    • 17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository.
    • 28.02.16: - Add chromecast support, bump dependency versions.
    • 04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set.
    • 17.12.15: - Add in spotify support.
    • 25.11.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-darktable/index.html b/images/docker-darktable/index.html index 5fb4f0ba6a..786b3936a3 100644 --- a/images/docker-darktable/index.html +++ b/images/docker-darktable/index.html @@ -1,4 +1,4 @@ - darktable - LinuxServer.io

    linuxserver/darktable

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + darktable - LinuxServer.io       

    linuxserver/darktable

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       darktable:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Darktable desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings and images

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it darktable /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f darktable
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' darktable
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/darktable:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 31.12.21: - Rebase to Alpine 3.15.
    • 01.10.21: - Rebase to Alpine 3.14.
    • 07.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it darktable /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f darktable
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' darktable
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/darktable:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 31.12.21: - Rebase to Alpine 3.15.
    • 01.10.21: - Rebase to Alpine 3.14.
    • 07.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-davos/index.html b/images/docker-davos/index.html index bb9c972046..d4d640a11b 100644 --- a/images/docker-davos/index.html +++ b/images/docker-davos/index.html @@ -1,4 +1,4 @@ - davos - LinuxServer.io

    linuxserver/davos

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + davos - LinuxServer.io       

    linuxserver/davos

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       davos:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 This is the default port that davos runs under

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation

    Volume Mappings (-v)

    Volume Function
    /config davos's config location. This is where it stores its database file and logs.
    /download davos's file download location

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it davos /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f davos
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' davos
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/davos:latest

    Versions

    • 15.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Updating runtime deps due to change in OpenJRE.
    • 08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it davos /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f davos
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' davos
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/davos:latest

    Versions

    • 15.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Updating runtime deps due to change in OpenJRE.
    • 08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ddclient/index.html b/images/docker-ddclient/index.html index 28491d231d..58e23acf79 100644 --- a/images/docker-ddclient/index.html +++ b/images/docker-ddclient/index.html @@ -1,4 +1,4 @@ - ddclient - LinuxServer.io

    linuxserver/ddclient

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit the ddclient.conf file found in your /config volume (also see official ddclient documentation). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config.

    Get dynamic IP from Fritz.Box

    If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf:

    use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox
    + ddclient - LinuxServer.io       

    linuxserver/ddclient

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit the ddclient.conf file found in your /config volume (also see official ddclient documentation). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config.

    Get dynamic IP from Fritz.Box

    If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf:

    use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox
     

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -23,4 +23,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where ddclient should store its config files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ddclient /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ddclient
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ddclient
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ddclient:latest

    Versions

    • 20.10.22: - Update build instructions for 3.10.0. Update default ddclient.conf.
    • 15.01.22: - Rebase to Alpine 3.15
    • 15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo
    • 08.03.21: - Added bind-tools to provide nsupdate
    • 01.06.20: - Rebasing to alpine 3.12.
    • 08.02.20: - Ingest from Github.
    • 06.02.19: - Fix permissions.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add perl-io-socket-inet6 for ipv6 support.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine 3.8.
    • 10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line server=www.cloudflare.com from your ddclient.conf.
    • 07.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 10.02.17: - Rebase to alpine 3.5.
    • 26.11.16: - Update README to new standard and add icon and other small details.
    • 29.08.16: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ddclient /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ddclient
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ddclient
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ddclient:latest

    Versions

    • 20.10.22: - Update build instructions for 3.10.0. Update default ddclient.conf.
    • 15.01.22: - Rebase to Alpine 3.15
    • 15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo
    • 08.03.21: - Added bind-tools to provide nsupdate
    • 01.06.20: - Rebasing to alpine 3.12.
    • 08.02.20: - Ingest from Github.
    • 06.02.19: - Fix permissions.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add perl-io-socket-inet6 for ipv6 support.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine 3.8.
    • 10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line server=www.cloudflare.com from your ddclient.conf.
    • 07.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 10.02.17: - Rebase to alpine 3.5.
    • 26.11.16: - Update README to new standard and add icon and other small details.
    • 29.08.16: - Initial release.
    \ No newline at end of file diff --git a/images/docker-deluge/index.html b/images/docker-deluge/index.html index 982c716cfe..456220f5e9 100644 --- a/images/docker-deluge/index.html +++ b/images/docker-deluge/index.html @@ -1,4 +1,4 @@ - deluge - LinuxServer.io

    linuxserver/deluge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Deluge is a lightweight, Free Software, cross-platform BitTorrent client.

    • Full Encryption
    • WebUI
    • Plugin System
    • Much more...

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge.

    To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password.

    Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + deluge - LinuxServer.io       

    linuxserver/deluge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Deluge is a lightweight, Free Software, cross-platform BitTorrent client.

    • Full Encryption
    • WebUI
    • Plugin System
    • Much more...

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge.

    To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password.

    Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       deluge:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8112 Port for webui
    6881 Inbound torrent traffic (See App Setup)
    6881/udp Inbound torrent traffic (See App Setup)

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use
    DELUGE_LOGLEVEL=error set the loglevel output when running Deluge, default is info for deluged and warning for delgued-web

    Volume Mappings (-v)

    Volume Function
    /config deluge configs
    /downloads torrent download directory

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it deluge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f deluge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' deluge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/deluge:latest

    Versions

    • 29.11.22: - Restore geoip using py3-geoip as an interim measure.
    • 24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2.
    • 22.11.22: - Update GeoIP URL for new IPFS domain.
    • 29.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 22.02.22: - Rebase to Alpine, config on first startup, add GeoIP.
    • 15.01.22: - Rebase to Focal.
    • 07.06.21: - Remove host networking from readme examples
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 09.05.19: - Add python3 requests and future modules.
    • 24.08.19: - Add ability to set LogLevel for Deluge.
    • 09.06.19: - Update to 2.x using deluge ppa.
    • 02.05.19: - Install full version of 7zip.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.11.18: - Add deluge-console.
    • 11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic.
    • 09.04.18: - update to libressl2.7-libssl.
    • 29.03.18: - Rebase to alpine edge.
    • 07.12.17: - Rebase to alpine 3.7.
    • 20.11.17: - Change libressl2.6-libssl repo.
    • 01.07.17: - Add curl package.
    • 26.05.17: - Rebase to alpine 3.6.
    • 29.04.17: - Add variable for user defined umask.
    • 28.04.17: - update to libressl2.5-libssl.
    • 28.12.16: - Rebase to alpine 3.5 baseimage.
    • 17.11.16: - Rebase to edge baseimage.
    • 13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 30.08.16: - Use pip packages for some critical dependencies.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Rebase to alpine linux.
    • 09.11.15: - Add unrar and unzip
    • 15.10.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it deluge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f deluge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' deluge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/deluge:latest

    Versions

    • 29.11.22: - Restore geoip using py3-geoip as an interim measure.
    • 24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2.
    • 22.11.22: - Update GeoIP URL for new IPFS domain.
    • 29.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 22.02.22: - Rebase to Alpine, config on first startup, add GeoIP.
    • 15.01.22: - Rebase to Focal.
    • 07.06.21: - Remove host networking from readme examples
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 09.05.19: - Add python3 requests and future modules.
    • 24.08.19: - Add ability to set LogLevel for Deluge.
    • 09.06.19: - Update to 2.x using deluge ppa.
    • 02.05.19: - Install full version of 7zip.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.11.18: - Add deluge-console.
    • 11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic.
    • 09.04.18: - update to libressl2.7-libssl.
    • 29.03.18: - Rebase to alpine edge.
    • 07.12.17: - Rebase to alpine 3.7.
    • 20.11.17: - Change libressl2.6-libssl repo.
    • 01.07.17: - Add curl package.
    • 26.05.17: - Rebase to alpine 3.6.
    • 29.04.17: - Add variable for user defined umask.
    • 28.04.17: - update to libressl2.5-libssl.
    • 28.12.16: - Rebase to alpine 3.5 baseimage.
    • 17.11.16: - Rebase to edge baseimage.
    • 13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 30.08.16: - Use pip packages for some critical dependencies.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Rebase to alpine linux.
    • 09.11.15: - Add unrar and unzip
    • 15.10.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-digikam/index.html b/images/docker-digikam/index.html index fb4de95d00..18f31bce53 100644 --- a/images/docker-digikam/index.html +++ b/images/docker-digikam/index.html @@ -1,4 +1,4 @@ - digikam - LinuxServer.io

    linuxserver/digikam

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    digiKam: Professional Photo Management with the Power of Open Source

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Mysql Internal

    When using mysql internal mode for the database you will need to click on "Find" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open.

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + digikam - LinuxServer.io       

    linuxserver/digikam

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    digiKam: Professional Photo Management with the Power of Open Source

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Mysql Internal

    When using mysql internal mode for the database you will need to click on "Find" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open.

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       digikam:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 digiKam desktop gui

    Networking (--net)

    Parameter Function
    --net=host Use Host Networking

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York.
    SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/
    KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores database.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it digikam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f digikam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' digikam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/digikam:latest

    Versions

    • 21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward.
    • 20.10.22: - Migrate to s6v3.
    • 07.03.22: - Add Exiftool and firefox for image exports.
    • 20.02.22: - Add MariaDB, expand documentation.
    • 15.02.22: - Rebase to Arch.
    • 27.12.21: - Rebase to focal to resolve dependency issues.
    • 27.03.21: - Download link fixed.
    • 20.05.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it digikam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f digikam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' digikam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/digikam:latest

    Versions

    • 21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward.
    • 20.10.22: - Migrate to s6v3.
    • 07.03.22: - Add Exiftool and firefox for image exports.
    • 20.02.22: - Add MariaDB, expand documentation.
    • 15.02.22: - Rebase to Arch.
    • 27.12.21: - Rebase to focal to resolve dependency issues.
    • 27.03.21: - Download link fixed.
    • 20.05.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-dillinger/index.html b/images/docker-dillinger/index.html index 9be3728977..1866ab0c8a 100644 --- a/images/docker-dillinger/index.html +++ b/images/docker-dillinger/index.html @@ -1,4 +1,4 @@ - dillinger - LinuxServer.io

    linuxserver/dillinger

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + dillinger - LinuxServer.io       

    linuxserver/dillinger

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       dillinger:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 The port for the Dillinger web interface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Dillinger plugin config files

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it dillinger /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dillinger
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' dillinger
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/dillinger:latest

    Versions

    • 19.04.22: - Rebase to Alpine.
    • 31.05.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it dillinger /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dillinger
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' dillinger
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/dillinger:latest

    Versions

    • 19.04.22: - Rebase to Alpine.
    • 31.05.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-diskover/index.html b/images/docker-diskover/index.html index c3574e33da..d01db50434 100644 --- a/images/docker-diskover/index.html +++ b/images/docker-diskover/index.html @@ -1,4 +1,4 @@ - diskover - LinuxServer.io

    linuxserver/diskover

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information.

    The default username is diskover with the password of darkdata, access the container at http://<host-ip>/. The UI may be unusable until a valid index has been created.

    The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = elasticsearch * const ES_PORT = 9200

    The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data. Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode:

    • docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the background
    • docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the foreground

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    version: '2'
    + diskover - LinuxServer.io       

    linuxserver/diskover

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information.

    The default username is diskover with the password of darkdata, access the container at http://<host-ip>/. The UI may be unusable until a valid index has been created.

    The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = elasticsearch * const ES_PORT = 9200

    The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data. Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode:

    • docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the background
    • docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the foreground

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    version: '2'
     services:
       diskover:
         image: lscr.io/linuxserver/diskover
    @@ -58,4 +58,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 diskover Web UI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    ES_HOST=elasticsearch ElasticSearch host (optional)
    ES_PORT=9200 ElasticSearch port (optional)
    ES_USER=elastic ElasticSearch username (optional)
    ES_PASS=changeme ElasticSearch password (optional)

    Volume Mappings (-v)

    Volume Function
    /config Persistent config files
    /data Default mount point to crawl

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it diskover /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f diskover
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' diskover
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/diskover:latest

    Versions

    • 25.02.22: - Add php7-sqlite3 to support rc4 release.
    • 03.11.21: - Added more support for potential config files.
    • 31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover
    • 11.10.21: - Updated to diskover-community v2.
    • 19.11.20: - Fix pip packages.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.11.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it diskover /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f diskover
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' diskover
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/diskover:latest

    Versions

    • 25.02.22: - Add php7-sqlite3 to support rc4 release.
    • 03.11.21: - Added more support for potential config files.
    • 31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover
    • 11.10.21: - Updated to diskover-community v2.
    • 19.11.20: - Fix pip packages.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.11.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-doc-builder/index.html b/images/docker-doc-builder/index.html index 68e2b9ac07..a71243ea3c 100644 --- a/images/docker-doc-builder/index.html +++ b/images/docker-doc-builder/index.html @@ -1,4 +1,4 @@ - linuxserver/doc-builder - LinuxServer.io

    linuxserver/doc-builder

    Expects to run as part of the LSIO CI process. Not for public consumption.

    **Running against remote: **

    docker run --rm \
    + linuxserver/doc-builder - LinuxServer.io       

    linuxserver/doc-builder

    Expects to run as part of the LSIO CI process. Not for public consumption.

    **Running against remote: **

    docker run --rm \
      -e CONTAINER_NAME=${CONTAINER_NAME} \
      -v ${TEMPDIR}:/ansible/readme \
      linuxserver/doc-builder:latest
    @@ -6,4 +6,4 @@
      -v $(pwd):/tmp \
      -e LOCAL=true \
      linuxserver/doc-builder:latest
    -

    The output will be in a GENERATED.md in your current working directory.

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file +

    The output will be in a GENERATED.md in your current working directory.

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-docker-compose/index.html b/images/docker-docker-compose/index.html index dfb3305317..249e1538f7 100644 --- a/images/docker-docker-compose/index.html +++ b/images/docker-docker-compose/index.html @@ -1,4 +1,4 @@ - docker-compose - LinuxServer.io

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring:

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at:

    • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
    • Discord - realtime support / chat with the community and the team.
    • Discourse - post on our community forum.
    • Fleet - an online web interface which displays all of our maintained images.
    • GitHub - view the source for all of our repositories.
    • Open Collective - please consider helping us by either donating or contributing to our budget

    linuxserver/docker-compose

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.

    docker-compose

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest docker-compose v1 releases
    alpine docker-compose v1 releases with our alpine baseimage
    v2 docker compose v2 releases

    Usage

    Docker cli

    docker run --rm \
    + docker-compose - LinuxServer.io       

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring:

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at:

    • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
    • Discord - realtime support / chat with the community and the team.
    • Discourse - post on our community forum.
    • Fleet - an online web interface which displays all of our maintained images.
    • GitHub - view the source for all of our repositories.
    • Open Collective - please consider helping us by either donating or contributing to our budget

    linuxserver/docker-compose

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.

    docker-compose

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest docker-compose v1 releases
    alpine docker-compose v1 releases with our alpine baseimage
    v2 docker compose v2 releases

    Usage

    Docker cli

    docker run --rm \
       -v /var/run/docker.sock:/var/run/docker.sock \
       -v "$PWD:$PWD" \
       -w="$PWD" \
    @@ -13,4 +13,4 @@ docker build \
       --pull \
       -t lscr.io/linuxserver/docker-compose:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15.
    • 17.12.20: - Update run.sh with formatting changes.
    • 04.10.20: - Update run.sh with changes from upstream.
    • 31.08.20: - Update tox and virtualenv.
    • 31.07.20: - Add support for global env var DOCKER_COMPOSE_IMAGE_TAG in the run.sh script.
    • 06.07.20: - Publish docker-compose and docker-cli binaries in Github releases.
    • 01.07.20: - Release alpine based images at alpine tag.
    • 04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version.
    • 19.05.20: - Initial Release.
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15.
    • 17.12.20: - Update run.sh with formatting changes.
    • 04.10.20: - Update run.sh with changes from upstream.
    • 31.08.20: - Update tox and virtualenv.
    • 31.07.20: - Add support for global env var DOCKER_COMPOSE_IMAGE_TAG in the run.sh script.
    • 06.07.20: - Publish docker-compose and docker-cli binaries in Github releases.
    • 01.07.20: - Release alpine based images at alpine tag.
    • 04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version.
    • 19.05.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-dokuwiki/index.html b/images/docker-dokuwiki/index.html index 3e24329568..b57a31e55d 100644 --- a/images/docker-dokuwiki/index.html +++ b/images/docker-dokuwiki/index.html @@ -1,4 +1,4 @@ - dokuwiki - LinuxServer.io

    linuxserver/dokuwiki

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set "Use nice URLs" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/, for more info see Dokuwiki

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + dokuwiki - LinuxServer.io       

    linuxserver/dokuwiki

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set "Use nice URLs" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/, for more info see Dokuwiki

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       dokuwiki:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Application HTTP Port
    443 #optional Application HTTPS Port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it dokuwiki /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dokuwiki
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' dokuwiki
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/dokuwiki:latest

    Versions

    • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template.
    • 15.04.21: - Add vendor folder to deny list.
    • 21.02.21: - Store search index outside of container, set absolute (default) path for savedir.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 28.09.20: - Add php7-pdo_sqlite and php7-sqlite3.
    • 23.09.20: - Fix php-local.ini bug introduced in the prior PR.
    • 14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.12.19: - Add php7-ldap package to support LDAP authentication.
    • 28.05.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it dokuwiki /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dokuwiki
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' dokuwiki
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/dokuwiki:latest

    Versions

    • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template.
    • 15.04.21: - Add vendor folder to deny list.
    • 21.02.21: - Store search index outside of container, set absolute (default) path for savedir.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 28.09.20: - Add php7-pdo_sqlite and php7-sqlite3.
    • 23.09.20: - Fix php-local.ini bug introduced in the prior PR.
    • 14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.12.19: - Add php7-ldap package to support LDAP authentication.
    • 28.05.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-domoticz/index.html b/images/docker-domoticz/index.html index beb12daa9e..c0d224da3f 100644 --- a/images/docker-domoticz/index.html +++ b/images/docker-domoticz/index.html @@ -1,4 +1,4 @@ - domoticz - LinuxServer.io

    linuxserver/domoticz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + domoticz - LinuxServer.io       

    linuxserver/domoticz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       domoticz:
    @@ -40,4 +40,4 @@ usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
     
    As you can see above, the device node created is ttyUSB0. It does not say where, but it's almost always in /dev/. The correct tag for passing through this USB device is '--device /dev/ttyUSB0:/dev/ttyUSB0'

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 WebUI
    6144 Domoticz communication port.
    1443 Domoticz communication port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    WEBROOT=domoticz Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying.
    DBASE=<path to database> Sets path to database. Do not set unless you know what this does.

    Volume Mappings (-v)

    Volume Function
    /config Where Domoticz stores config files and data.

    Device Mappings (--device)

    Parameter Function
    path to device For passing through USB devices.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it domoticz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f domoticz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' domoticz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/domoticz:latest

    Versions

    • 15.10.22: - Remove deprecated legacy stable branches.
    • 05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path.
    • 26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 24.11.19: - Change to using domoticz builtin Lua and MQTT.
    • 03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo.
    • 28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons.
    • 12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9.
    • 30.03.19: - Add env variable to set webroot.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Fix branch for version logic.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 02.07.18: - Add openssh package.
    • 01.07.18: - Fix backup/restore in webgui.
    • 03.04.18: - Add dependencies for BroadlinkRM2 plugin.
    • 20.01.18: - Move telldus core to repo to prevent build fail when source site goes down.
    • 18.01.18: - Remove logging to syslog in the run command to prevent double logging.
    • 04.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 28.05.17: - Rebase to alpine 3.6.
    • 26.02.17: - Add curl and replace openssl with libressl.
    • 11.02.17: - Update README.
    • 03.01.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it domoticz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f domoticz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' domoticz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/domoticz:latest

    Versions

    • 15.10.22: - Remove deprecated legacy stable branches.
    • 05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path.
    • 26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 24.11.19: - Change to using domoticz builtin Lua and MQTT.
    • 03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo.
    • 28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons.
    • 12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9.
    • 30.03.19: - Add env variable to set webroot.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Fix branch for version logic.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 02.07.18: - Add openssh package.
    • 01.07.18: - Fix backup/restore in webgui.
    • 03.04.18: - Add dependencies for BroadlinkRM2 plugin.
    • 20.01.18: - Move telldus core to repo to prevent build fail when source site goes down.
    • 18.01.18: - Remove logging to syslog in the run command to prevent double logging.
    • 04.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 28.05.17: - Rebase to alpine 3.6.
    • 26.02.17: - Add curl and replace openssl with libressl.
    • 11.02.17: - Update README.
    • 03.01.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-doplarr/index.html b/images/docker-doplarr/index.html index f8c2d545c3..52a59a5705 100644 --- a/images/docker-doplarr/index.html +++ b/images/docker-doplarr/index.html @@ -1,4 +1,4 @@ - doplarr - LinuxServer.io

    linuxserver/doplarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Doplarr is an *arr request bot for Discord."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    Start by following the Discord setup instructions from Doplarr's readme.

    NOTE: The DISCORD__TOKEN environment variable is required to run the container!

    • If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank.
    • If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank.

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m".

    Review and adjust any Optional Settings from Doplarr's readme.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + doplarr - LinuxServer.io       

    linuxserver/doplarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Doplarr is an *arr request bot for Discord."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    Start by following the Discord setup instructions from Doplarr's readme.

    NOTE: The DISCORD__TOKEN environment variable is required to run the container!

    • If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank.
    • If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank.

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS="-Xmx256m -Xms256m".

    Review and adjust any Optional Settings from Doplarr's readme.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       doplarr:
    @@ -58,4 +58,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    DISCORD__TOKEN= Specify your discord bot token.
    OVERSEERR__API= Specify your Overseerr API key. Leave blank if using Radarr/Sonarr.
    OVERSEERR__URL=http://localhost:5055 Specify your Overseerr URL. Leave blank if using Radarr/Sonarr.
    RADARR__API= Specify your Radarr API key. Leave blank if using Overseerr.
    RADARR__URL=http://localhost:7878 Specify your Radarr URL. Leave blank if using Overseerr.
    SONARR__API= Specify your Sonarr API key. Leave blank if using Overseerr.
    SONARR__URL=http://localhost:8989 Specify your Sonarr URL. Leave blank if using Overseerr.
    DISCORD__MAX_RESULTS=25 Sets the maximum size of the search results selection
    DISCORD__REQUESTED_MSG_STYLE=:plain Sets the style of the request alert message. One of :plain :embed :none
    SONARR__QUALITY_PROFILE= The name of the quality profile to use by default for Sonarr
    RADARR__QUALITY_PROFILE= The name of the quality profile to use by default for Radarr
    SONARR__ROOTFOLDER= The root folder to use by default for Sonarr
    RADARR__ROOTFOLDER= The root folder to use by default for Radarr
    SONARR__LANGUAGE_PROFILE= The name of the language profile to use by default for Sonarr
    OVERSEERR__DEFAULT_ID= The Overseerr user id to use by default if there is no associated discord account for the requester
    PARTIAL_SEASONS=true Sets whether users can request partial seasons.
    LOG_LEVEL=:info The log level for the logging backend. This can be changed for debugging purposes. One of trace :debug :info :warn :error :fatal :report
    JAVA_OPTS= For passing additional java options.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it doplarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doplarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' doplarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/doplarr:latest

    Versions

    • 18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17.
    • 01.05.22: - Remove DISCORD__ROLE_ID environment variable, see Permissions Configuration.
    • 30.01.22: - Variable adjustments.
    • 30.01.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it doplarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doplarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' doplarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/doplarr:latest

    Versions

    • 18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17.
    • 01.05.22: - Remove DISCORD__ROLE_ID environment variable, see Permissions Configuration.
    • 30.01.22: - Variable adjustments.
    • 30.01.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-doublecommander/index.html b/images/docker-doublecommander/index.html index b45dd09e3a..62ea307864 100644 --- a/images/docker-doublecommander/index.html +++ b/images/docker-doublecommander/index.html @@ -1,4 +1,4 @@ - doublecommander - LinuxServer.io

    linuxserver/doublecommander

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + doublecommander - LinuxServer.io       

    linuxserver/doublecommander

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       doublecommander:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Double Commander desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings.
    /data Host data directories, mount as many as needed.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it doublecommander /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doublecommander
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' doublecommander
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/doublecommander:latest

    Versions

    • 16.09.22: - Migrate to s6v3.
    • 15.02.21: - Rebase to Ubuntu Jammy.
    • 14.12.21: - Rebase to Ubuntu focal.
    • 25.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it doublecommander /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doublecommander
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' doublecommander
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/doublecommander:latest

    Versions

    • 16.09.22: - Migrate to s6v3.
    • 15.02.21: - Rebase to Ubuntu Jammy.
    • 14.12.21: - Rebase to Ubuntu focal.
    • 25.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-duckdns/index.html b/images/docker-duckdns/index.html index f052381618..dd1f10f42e 100644 --- a/images/docker-duckdns/index.html +++ b/images/docker-duckdns/index.html @@ -1,4 +1,4 @@ - duckdns - LinuxServer.io

    linuxserver/duckdns

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Go to the duckdns website, register your subdomain(s) and retrieve your token
    • Create a container with your subdomain(s) and token
    • It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + duckdns - LinuxServer.io       

    linuxserver/duckdns

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Go to the duckdns website, register your subdomain(s) and retrieve your token
    • Create a container with your subdomain(s) and token
    • It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       duckdns:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces
    TOKEN=token DuckDNS token
    LOG_FILE=false Set to true to log to file (also need to map /config).

    Volume Mappings (-v)

    Volume Function
    /config Used in conjunction with logging to file.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it duckdns /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duckdns
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' duckdns
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duckdns:latest

    Versions

    • 23.09.22: - Rebase to alpine 3.16 and s6v3.
    • 19.09.22: - Rebase to alpine 3.15.
    • 17.05.22: - Don't allow insecure connections and add timeout.
    • 17.05.22: - Add random jitter to update time.
    • 23.02.22: - Append to log file instead of overwriting every time.
    • 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.04.20: - Add donation links for DuckDNS.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 24.09.19: - Fix perms on github and remove chmod that can stall the container.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 08.02.19: - Update readme with optional parameters.
    • 10.12.18: - Fix docker compose example.
    • 15.10.18: - Multi-arch image.
    • 22.08.18: - Rebase to alpine 3.8.
    • 08.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 17.11.16: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it duckdns /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duckdns
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' duckdns
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duckdns:latest

    Versions

    • 23.09.22: - Rebase to alpine 3.16 and s6v3.
    • 19.09.22: - Rebase to alpine 3.15.
    • 17.05.22: - Don't allow insecure connections and add timeout.
    • 17.05.22: - Add random jitter to update time.
    • 23.02.22: - Append to log file instead of overwriting every time.
    • 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.04.20: - Add donation links for DuckDNS.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 24.09.19: - Fix perms on github and remove chmod that can stall the container.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 08.02.19: - Update readme with optional parameters.
    • 10.12.18: - Fix docker compose example.
    • 15.10.18: - Multi-arch image.
    • 22.08.18: - Rebase to alpine 3.8.
    • 08.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 17.11.16: - Initial release.
    \ No newline at end of file diff --git a/images/docker-duplicati/index.html b/images/docker-duplicati/index.html index 6dba536c93..687ac96ae4 100644 --- a/images/docker-duplicati/index.html +++ b/images/docker-duplicati/index.html @@ -1,4 +1,4 @@ - duplicati - LinuxServer.io

    linuxserver/duplicati

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Beta releases of Duplicati
    development Canary releases of Duplicati

    Application Setup

    The webui is at <your ip>:8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + duplicati - LinuxServer.io       

    linuxserver/duplicati

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Beta releases of Duplicati
    development Canary releases of Duplicati

    Application Setup

    The webui is at <your ip>:8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       duplicati:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8200 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    CLI_ARGS= Optionally specify any CLI variables you want to launch the app with

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /backups Path to store local backups.
    /source Path to source for files to backup.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it duplicati /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duplicati
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' duplicati
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duplicati:latest

    Versions

    • 03.08.22: - Deprecate armhf.
    • 25.04.22: - Rebase to mono:focal.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 16.07.19: - Allow for additional command line arguments in an environment variable.
    • 28.06.19: - Rebase to bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 28.02.19: - Allow access from all hostnames, clarify info on image tags.
    • 13.01.19: - Use jq instead of awk in dockerfiles.
    • 11.01.19: - Multi-arch image.
    • 09.12.17: - Fix continuation lines.
    • 31.08.17: - Build only beta or release versions (thanks deasmi).
    • 24.04.17: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it duplicati /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duplicati
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' duplicati
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/duplicati:latest

    Versions

    • 03.08.22: - Deprecate armhf.
    • 25.04.22: - Rebase to mono:focal.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 16.07.19: - Allow for additional command line arguments in an environment variable.
    • 28.06.19: - Rebase to bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 28.02.19: - Allow access from all hostnames, clarify info on image tags.
    • 13.01.19: - Use jq instead of awk in dockerfiles.
    • 11.01.19: - Multi-arch image.
    • 09.12.17: - Fix continuation lines.
    • 31.08.17: - Build only beta or release versions (thanks deasmi).
    • 24.04.17: - Initial release.
    \ No newline at end of file diff --git a/images/docker-emby/index.html b/images/docker-emby/index.html index 84267a4b89..64e4026877 100644 --- a/images/docker-emby/index.html +++ b/images/docker-emby/index.html @@ -1,4 +1,4 @@ - emby - LinuxServer.io

    linuxserver/emby

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable emby releases
    beta Beta emby releases

    Application Setup

    Webui can be found at http://<your-ip>:8096

    Emby has very complete and verbose documentation located here .

    Hardware acceleration users for Intel Quicksync and AMD VAAPI will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the emby docker.

    OpenMAX (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi OpenMAX will need to mount their /dev/vchiq video device inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vchiq:/dev/vchiq
    + emby - LinuxServer.io       

    linuxserver/emby

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable emby releases
    beta Beta emby releases

    Application Setup

    Webui can be found at http://<your-ip>:8096

    Emby has very complete and verbose documentation located here .

    Hardware acceleration users for Intel Quicksync and AMD VAAPI will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the emby docker.

    OpenMAX (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi OpenMAX will need to mount their /dev/vchiq video device inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vchiq:/dev/vchiq
     -v /opt/vc/lib:/opt/vc/lib
     

    V4L2 (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

    --device=/dev/video10:/dev/video10
     --device=/dev/video11:/dev/video11
    @@ -49,4 +49,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8096 Http webUI.
    8920 Https webUI (you need to setup your own certificate).

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Emby data storage location. This can grow very large, 50gb+ is likely for a large collection.
    /data/tvshows Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc.
    /data/movies Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc.
    /opt/vc/lib Path for Raspberry Pi OpenMAX libs optional.

    Device Mappings (--device)

    Parameter Function
    /dev/dri Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi).
    /dev/vchiq Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio).
    /dev/video10 Only needed if you want to use your Raspberry Pi V4L2 video encoding.
    /dev/video11 Only needed if you want to use your Raspberry Pi V4L2 video encoding.
    /dev/video12 Only needed if you want to use your Raspberry Pi V4L2 video encoding.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it emby /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emby
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' emby
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/emby:latest

    Versions

    • 26.09.22: - Update chown behavior.
    • 18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy.
    • 19.05.21: - Structural changes upstream.
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode.
    • 21.12.20: - Rebase to Focal, see here for troubleshooting armhf.
    • 03.11.20: - Fix issue with missing samba folder.
    • 13.11.20: - Fix issue with samba and ffmpeg.
    • 03.07.20: - Add support for amd vaapi hw transcode.
    • 29.02.20: - Add v4l2 support on Raspberry Pi.
    • 26.02.20: - Add openmax support on Raspberry Pi.
    • 15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates).
    • 02.10.19: - Improve permission fixing for render and dvb devices.
    • 13.08.19: - Add umask environment variable.
    • 24.06.19: - Fix typos in readme.
    • 30.05.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it emby /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emby
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' emby
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/emby:latest

    Versions

    • 26.09.22: - Update chown behavior.
    • 18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy.
    • 19.05.21: - Structural changes upstream.
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode.
    • 21.12.20: - Rebase to Focal, see here for troubleshooting armhf.
    • 03.11.20: - Fix issue with missing samba folder.
    • 13.11.20: - Fix issue with samba and ffmpeg.
    • 03.07.20: - Add support for amd vaapi hw transcode.
    • 29.02.20: - Add v4l2 support on Raspberry Pi.
    • 26.02.20: - Add openmax support on Raspberry Pi.
    • 15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates).
    • 02.10.19: - Improve permission fixing for render and dvb devices.
    • 13.08.19: - Add umask environment variable.
    • 24.06.19: - Fix typos in readme.
    • 30.05.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-embystat/index.html b/images/docker-embystat/index.html index 005c59b3eb..fcbafc0b14 100644 --- a/images/docker-embystat/index.html +++ b/images/docker-embystat/index.html @@ -1,4 +1,4 @@ - embystat - LinuxServer.io

    linuxserver/embystat

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:6555. Follow the setup wizard on initial install. Then configure the required services.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + embystat - LinuxServer.io       

    linuxserver/embystat

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:6555. Follow the setup wizard on initial install. Then configure the required services.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       embystat:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    6555 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it embystat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f embystat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' embystat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/embystat:latest

    Versions

    • 11.06.22: - Rebase to focal, update disable updates flag.
    • 08.04.20: - Structural changes for beta18.
    • 04.12.19: - Disable in app updates.
    • 12.11.19: - Multi-arch builds.
    • 10.09.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it embystat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f embystat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' embystat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/embystat:latest

    Versions

    • 11.06.22: - Rebase to focal, update disable updates flag.
    • 08.04.20: - Structural changes for beta18.
    • 04.12.19: - Disable in app updates.
    • 12.11.19: - Multi-arch builds.
    • 10.09.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-emulatorjs/index.html b/images/docker-emulatorjs/index.html index 9989f0ceee..9459c31336 100644 --- a/images/docker-emulatorjs/index.html +++ b/images/docker-emulatorjs/index.html @@ -1,4 +1,4 @@ - emulatorjs - LinuxServer.io

    linuxserver/emulatorjs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The Backend can be accessed at:

    • http://yourhost:3000/

    The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80.

    The frontend application has been initially optimized around being used with a standard gamepad (more specifically for modern Xbox consoles that have chromium based Edge browsers). The navigation revolves around the up/down/left/right keys to browse the menus and launch games. Mobile browsers will function, just keep in mind compatibility will be reduced especially for CD based games.

    It is important to note that some of the current emulators used for this frontend are obfuscated code, efforts are being made to reverse engineer it but you should know it can potentially reach out to third party services if you manually enable features like netplay (this should never happen in a stock setup). The point of this message is that on top of the de-obfuscation effort there is also effort to stop using binary blobs and shift to built from source libretro emscripten blobs, for now this web based emulation stack is the best for useability and compatibility. We are in the process to transitioning to libretro cores for emulators, currently 27/30 emulators have been replaced.

    For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a "back" action in the browser. (official name "view button" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name "menu button" the three lines) You will be unable to use features like save states and modify controller layouts on the emulatorjs based emulators currently as I have not determined a methodology of re-entering controller mode once you exit it. All normal game saves will function given you exit the game play screen cleanly using the B button for back this includes multi disc games for psx. Your game saves are stored in browser storage by hostname so if you make any changes to your local hosted setup (port or IP) the saves will not follow with it. For libretro based emulators you can use the button combination start+select+L+R to access the libretro menu and change settings/save or load/etc.

    We know about most of the oddities like crackling sound for some emulators, rendering issues, and games unreliably auto launching to fullscreen. In general full CD games on the Xbox web browser do not seem to work due to their size if you have a chd/pbp less than 450 megs it will run. Edge on Xbox has some kind of undocumented ram limitation of about a gigabyte. Until all emulators are transitioned to libretro cores the oddities of using self hosted EmulatorJS will not be something that can or should be solved using hacky workarounds interacting with obfuscated code. Just keep in mind these are full blown machine emulators running in Javascript in a browser, do not expect bare metal performance.

    Mounting in existing rom directories can be achieved by pointing to the default folder structure, IE lets say you would like to mount your NES library:

    -v /path/to/nes/roms:/data/nes/roms

    The folder names are: * 3do * arcade * atari2600 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + emulatorjs - LinuxServer.io       

    linuxserver/emulatorjs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The Backend can be accessed at:

    • http://yourhost:3000/

    The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80.

    The frontend application has been initially optimized around being used with a standard gamepad (more specifically for modern Xbox consoles that have chromium based Edge browsers). The navigation revolves around the up/down/left/right keys to browse the menus and launch games. Mobile browsers will function, just keep in mind compatibility will be reduced especially for CD based games.

    It is important to note that some of the current emulators used for this frontend are obfuscated code, efforts are being made to reverse engineer it but you should know it can potentially reach out to third party services if you manually enable features like netplay (this should never happen in a stock setup). The point of this message is that on top of the de-obfuscation effort there is also effort to stop using binary blobs and shift to built from source libretro emscripten blobs, for now this web based emulation stack is the best for useability and compatibility. We are in the process to transitioning to libretro cores for emulators, currently 27/30 emulators have been replaced.

    For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a "back" action in the browser. (official name "view button" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name "menu button" the three lines) You will be unable to use features like save states and modify controller layouts on the emulatorjs based emulators currently as I have not determined a methodology of re-entering controller mode once you exit it. All normal game saves will function given you exit the game play screen cleanly using the B button for back this includes multi disc games for psx. Your game saves are stored in browser storage by hostname so if you make any changes to your local hosted setup (port or IP) the saves will not follow with it. For libretro based emulators you can use the button combination start+select+L+R to access the libretro menu and change settings/save or load/etc.

    We know about most of the oddities like crackling sound for some emulators, rendering issues, and games unreliably auto launching to fullscreen. In general full CD games on the Xbox web browser do not seem to work due to their size if you have a chd/pbp less than 450 megs it will run. Edge on Xbox has some kind of undocumented ram limitation of about a gigabyte. Until all emulators are transitioned to libretro cores the oddities of using self hosted EmulatorJS will not be something that can or should be solved using hacky workarounds interacting with obfuscated code. Just keep in mind these are full blown machine emulators running in Javascript in a browser, do not expect bare metal performance.

    Mounting in existing rom directories can be achieved by pointing to the default folder structure, IE lets say you would like to mount your NES library:

    -v /path/to/nes/roms:/data/nes/roms

    The folder names are: * 3do * arcade * atari2600 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       emulatorjs:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Rom/artwork management interface, used to generate/manage config files and download artwork
    80 Emulation frontend containing static web files used to browse and launch games
    4001 IPFS peering port, if you want to participate in the P2P network to distribute frontend artwork please forward this to the Internet

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SUBFOLDER=/ Specify a subfolder for reverse proxies IE '/FOLDER/'

    Volume Mappings (-v)

    Volume Function
    /config Path to store user profiles
    /data Path to store roms/artwork

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it emulatorjs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emulatorjs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' emulatorjs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/emulatorjs:latest

    Versions

    • 24.11.22: - Update IPFS links for chdman.
    • 04.04.22: - Ingest pre-built chdman bins during build time.
    • 23.02.22: - Update ingestion point for emulatorjs bins.
    • 25.01.22: - Allow users to mount in existing rom directories.
    • 14.01.22: - Add profile paths and rebase to Alpine 3.15.
    • 04.01.22: - Add headers needed for Threaded emulators.
    • 29.11.21: - Add wasm mime type to NGINX.
    • 26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores.
    • 19.11.21: - Pin retroarch version.
    • 14.11.21: - Update default cores to ingest.
    • 23.10.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it emulatorjs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emulatorjs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' emulatorjs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/emulatorjs:latest

    Versions

    • 24.11.22: - Update IPFS links for chdman.
    • 04.04.22: - Ingest pre-built chdman bins during build time.
    • 23.02.22: - Update ingestion point for emulatorjs bins.
    • 25.01.22: - Allow users to mount in existing rom directories.
    • 14.01.22: - Add profile paths and rebase to Alpine 3.15.
    • 04.01.22: - Add headers needed for Threaded emulators.
    • 29.11.21: - Add wasm mime type to NGINX.
    • 26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores.
    • 19.11.21: - Pin retroarch version.
    • 14.11.21: - Update default cores to ingest.
    • 23.10.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-endlessh/index.html b/images/docker-endlessh/index.html index dfd043ed07..494fb35f52 100644 --- a/images/docker-endlessh/index.html +++ b/images/docker-endlessh/index.html @@ -1,4 +1,4 @@ - endlessh - LinuxServer.io

    linuxserver/endlessh

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config. The logs will be under /config/logs/endlessh.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + endlessh - LinuxServer.io       

    linuxserver/endlessh

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config. The logs will be under /config/logs/endlessh.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       endlessh:
    @@ -35,4 +35,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    2222 ssh port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines.
    MAXLINES=32 The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes.
    MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue.
    LOGFILE=false By default, the app logs to container log. If this is set to true, the log will be output to file under /config/logs/endlessh (/config needs to be mapped).
    BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both.

    Volume Mappings (-v)

    Volume Function
    /config Required if LOGFILE is set to true.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it endlessh /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f endlessh
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' endlessh
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/endlessh:latest

    Versions

    • 23.09.22: - Migrate to s6v3.
    • 20.07.22: - Rebase to Alpine 3.16.
    • 16.04.22: - Rebase to Alpine 3.15.
    • 07.10.21: - Fix typo on MAXLINES var.
    • 08.06.21: - Add BINDFAMILY option.
    • 16.04.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it endlessh /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f endlessh
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' endlessh
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/endlessh:latest

    Versions

    • 23.09.22: - Migrate to s6v3.
    • 20.07.22: - Rebase to Alpine 3.16.
    • 16.04.22: - Rebase to Alpine 3.15.
    • 07.10.21: - Fix typo on MAXLINES var.
    • 08.06.21: - Add BINDFAMILY option.
    • 16.04.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-fail2ban/index.html b/images/docker-fail2ban/index.html index 5080948573..d3bb519f2e 100644 --- a/images/docker-fail2ban/index.html +++ b/images/docker-fail2ban/index.html @@ -1,4 +1,4 @@ - fail2ban - LinuxServer.io

    linuxserver/fail2ban

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Fail2ban is a daemon to ban hosts that cause multiple authentication errors.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the chain to INPUT in the jail for that application.

    Configuration Files

    On first run, the container will create a number of folders and files in /config. The default configurations for fail2ban are all disabled by default.

    Please refer to the Configuration README, which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md.

    Remote Logs

    All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended.

    The /remotelogs path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath /remotelogs, ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + fail2ban - LinuxServer.io       

    linuxserver/fail2ban

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Fail2ban is a daemon to ban hosts that cause multiple authentication errors.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the chain to INPUT in the jail for that application.

    Configuration Files

    On first run, the container will create a number of folders and files in /config. The default configurations for fail2ban are all disabled by default.

    Please refer to the Configuration README, which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md.

    Remote Logs

    All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended.

    The /remotelogs path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath /remotelogs, ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       fail2ban:
    @@ -65,4 +65,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Networking (--net)

    Parameter Function
    --net=host Shares host networking with container.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /var/log:ro Host logs. Mounted as Read Only.
    /remotelogs/airsonic:ro Optional path to airsonic log folder. Mounted as Read Only.
    /remotelogs/apache2:ro Optional path to apache2 log folder. Mounted as Read Only.
    /remotelogs/authelia:ro Optional path to authelia log folder. Mounted as Read Only.
    /remotelogs/emby:ro Optional path to emby log folder. Mounted as Read Only.
    /remotelogs/filebrowser:ro Optional path to filebrowser log folder. Mounted as Read Only.
    /remotelogs/homeassistant:ro Optional path to homeassistant log folder. Mounted as Read Only.
    /remotelogs/lighttpd:ro Optional path to lighttpd log folder. Mounted as Read Only.
    /remotelogs/nextcloud:ro Optional path to nextcloud log folder. Mounted as Read Only.
    /remotelogs/nginx:ro Optional path to nginx log folder. Mounted as Read Only.
    /remotelogs/nzbget:ro Optional path to nzbget log folder. Mounted as Read Only.
    /remotelogs/overseerr:ro Optional path to overseerr log folder. Mounted as Read Only.
    /remotelogs/prowlarr:ro Optional path to prowlarr log folder. Mounted as Read Only.
    /remotelogs/radarr:ro Optional path to radarr log folder. Mounted as Read Only.
    /remotelogs/sabnzbd:ro Optional path to sabnzbd log folder. Mounted as Read Only.
    /remotelogs/sonarr:ro Optional path to sonarr log folder. Mounted as Read Only.
    /remotelogs/unificontroller:ro Optional path to unificontroller log folder. Mounted as Read Only.
    /remotelogs/vaultwarden:ro Optional path to vaultwarden log folder. Mounted as Read Only.

    Miscellaneous Options

    Parameter Function

    Portainer notice

    {% hint style="warning" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it fail2ban /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fail2ban
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' fail2ban
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/fail2ban:latest

    Versions

    • 15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading.
    • 25.08.22: - Update README to clarify remote log information.
    • 09.08.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it fail2ban /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fail2ban
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' fail2ban
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/fail2ban:latest

    Versions

    • 15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading.
    • 25.08.22: - Update README to clarify remote log information.
    • 09.08.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-feed2toot/index.html b/images/docker-feed2toot/index.html index 7bb7d0ce89..737ac0d381 100644 --- a/images/docker-feed2toot/index.html +++ b/images/docker-feed2toot/index.html @@ -1,4 +1,4 @@ - feed2toot - LinuxServer.io

    linuxserver/feed2toot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Run docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /usr/bin/register_feed2toot_app to generate credential files (be sure to set the correct volume path and PUID/PGID values).

    Edit the feed2toot.ini in /config to configure your instance name and RSS feeds.

    See the feed2toot docs for more information.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + feed2toot - LinuxServer.io       

    linuxserver/feed2toot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Run docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /usr/bin/register_feed2toot_app to generate credential files (be sure to set the correct volume path and PUID/PGID values).

    Edit the feed2toot.ini in /config to configure your instance name and RSS feeds.

    See the feed2toot docs for more information.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       feed2toot:
    @@ -24,4 +24,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    FEED_LIMIT=5 Limit number of RSS entries published at each execution.

    Volume Mappings (-v)

    Volume Function
    /config Local path for feed2toot config files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it feed2toot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f feed2toot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' feed2toot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/feed2toot:latest

    Versions

    • 22.12.22: - Rebase to alpine 3.17.
    • 14.11.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it feed2toot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f feed2toot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' feed2toot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/feed2toot:latest

    Versions

    • 22.12.22: - Rebase to alpine 3.17.
    • 14.11.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ffmpeg/index.html b/images/docker-ffmpeg/index.html index 0ca191b7c4..e9d7f05931 100644 --- a/images/docker-ffmpeg/index.html +++ b/images/docker-ffmpeg/index.html @@ -1,4 +1,4 @@ - ffmpeg - LinuxServer.io

    ffmpeg

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring :-

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * Podcast - on hiatus. Coming back soon (late 2018). * Open Collective - please consider helping us by either donating or contributing to our budget

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.

    ffmpeg

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.

    If an input file is detected we will run FFmpeg as that user/group so the output file will match it's permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below.

    Basic Transcode

    docker run --rm -it \
    + ffmpeg - LinuxServer.io       

    ffmpeg

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring :-

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * Podcast - on hiatus. Coming back soon (late 2018). * Open Collective - please consider helping us by either donating or contributing to our budget

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.

    ffmpeg

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.

    If an input file is detected we will run FFmpeg as that user/group so the output file will match it's permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below.

    Basic Transcode

    docker run --rm -it \
       -v $(pwd):/config \
       linuxserver/ffmpeg \
       -i /config/input.mkv \
    @@ -36,4 +36,4 @@ docker build \
       --pull \
       -t linuxserver/ffmpeg:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 14.12.22: - Rebase to Jammy, bump to 5.1.2.
    • 19.06.22: - Rebase to Focal.
    • 26.08.21: - Add support for libOpenCL.
    • 01.07.21: - Bump to 4.4.
    • 17.06.20: - Bump to 4.3.
    • 16.06.20: - Add support for libvmaf.
    • 01.08.19: - Initial release.
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 14.12.22: - Rebase to Jammy, bump to 5.1.2.
    • 19.06.22: - Rebase to Focal.
    • 26.08.21: - Add support for libOpenCL.
    • 01.07.21: - Bump to 4.4.
    • 17.06.20: - Bump to 4.3.
    • 16.06.20: - Add support for libvmaf.
    • 01.08.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-filezilla/index.html b/images/docker-filezilla/index.html index 0e63ce9d37..d08ddeef2c 100644 --- a/images/docker-filezilla/index.html +++ b/images/docker-filezilla/index.html @@ -1,4 +1,4 @@ - filezilla - LinuxServer.io

    linuxserver/filezilla

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + filezilla - LinuxServer.io       

    linuxserver/filezilla

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       filezilla:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 FileZilla desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores local files and settings

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it filezilla /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f filezilla
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' filezilla
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/filezilla:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 18.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it filezilla /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f filezilla
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' filezilla
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/filezilla:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 18.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-firefox/index.html b/images/docker-firefox/index.html index 60ab9edb94..96b6a4f132 100644 --- a/images/docker-firefox/index.html +++ b/images/docker-firefox/index.html @@ -1,4 +1,4 @@ - firefox - LinuxServer.io

    linuxserver/firefox

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + firefox - LinuxServer.io       

    linuxserver/firefox

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       firefox:
    @@ -30,4 +30,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Firefox desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores local files and settings

    Miscellaneous Options

    Parameter Function
    --shm-size= This is needed for any modern website to function like youtube.
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it firefox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f firefox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' firefox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/firefox:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15, stop using ESR.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 19.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it firefox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f firefox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' firefox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/firefox:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15, stop using ESR.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 19.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-fleet/index.html b/images/docker-fleet/index.html index eafd0ef5d8..12b6a98ab2 100644 --- a/images/docker-fleet/index.html +++ b/images/docker-fleet/index.html @@ -1,4 +1,4 @@ - fleet - LinuxServer.io

    linuxserver/fleet

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup. Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via http://your_ip_here:8080/login to manage your repositories.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + fleet - LinuxServer.io       

    linuxserver/fleet

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup. Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via http://your_ip_here:8080/login to manage your repositories.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       fleet:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Http port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    fleet_admin_authentication_type=DATABASE A switch to define how Fleet manages user logins. If set to DATABASE, see the related optional params. Can be set to either DATABASE or PROPERTIES.
    fleet_database_url=jdbc:mariadb://<url>:3306/fleet The full JDBC connection string to the Fleet database
    fleet_database_username=fleet_user The username with the relevant GRANT permissions for the database
    fleet_database_password=dbuserpassword The database user's password.
    fleet_admin_secret=randomstring A string used as part of the password key derivation process.

    Volume Mappings (-v)

    Volume Function
    /config The primary config file and rolling log files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it fleet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fleet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' fleet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/fleet:latest

    Versions

    • 02.05.22: - Rebase to Alpine 3.15.
    • 13.12.21: - Add mitigations for CVE-2021-44228
    • 26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet
    • 19.12.19: - Rebasing to alpine 3.11.
    • 02.07.19: - Rebasing to alpine 3.10.
    • 02.07.19: - Stop container if fleet fails.
    • 19.05.19: - Use new base images for arm versions.
    • 01.04.19: - Initial Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it fleet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fleet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' fleet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/fleet:latest

    Versions

    • 02.05.22: - Rebase to Alpine 3.15.
    • 13.12.21: - Add mitigations for CVE-2021-44228
    • 26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet
    • 19.12.19: - Rebasing to alpine 3.11.
    • 02.07.19: - Rebasing to alpine 3.10.
    • 02.07.19: - Stop container if fleet fails.
    • 19.05.19: - Use new base images for arm versions.
    • 01.04.19: - Initial Release
    \ No newline at end of file diff --git a/images/docker-foldingathome/index.html b/images/docker-foldingathome/index.html index 710b7f354f..49d9877e28 100644 --- a/images/docker-foldingathome/index.html +++ b/images/docker-foldingathome/index.html @@ -1,4 +1,4 @@ - foldingathome - LinuxServer.io

    linuxserver/foldingathome

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    This image sets up the Folding@home client. The interface is available at http://your-ip:7396.

    The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port 36330 (no password).

    There are a couple of minor issues with the webgui: - If you get an "ERR_EMPTY_RESPONSE" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via shft-F5 or ctrl-F5.

    GPU Hardware Acceleration

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + foldingathome - LinuxServer.io       

    linuxserver/foldingathome

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    This image sets up the Folding@home client. The interface is available at http://your-ip:7396.

    The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port 36330 (no password).

    There are a couple of minor issues with the webgui: - If you get an "ERR_EMPTY_RESPONSE" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via shft-F5 or ctrl-F5.

    GPU Hardware Acceleration

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       foldingathome:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    7396 Folding@home web gui.
    36330 Optional port for connecting remotely via FAHControl app (no password).

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where Folding@home should store its database and config.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it foldingathome /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f foldingathome
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' foldingathome
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/foldingathome:latest

    Versions

    • 14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3.
    • 15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings.
    • 09.01.21: - Add nvidia.icd.
    • 14.04.20: - Add Folding@home donation links.
    • 20.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it foldingathome /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f foldingathome
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' foldingathome
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/foldingathome:latest

    Versions

    • 14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3.
    • 15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings.
    • 09.01.21: - Add nvidia.icd.
    • 14.04.20: - Add Folding@home donation links.
    • 20.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-freshrss/index.html b/images/docker-freshrss/index.html index 9a6c4bce51..90bb1320a1 100644 --- a/images/docker-freshrss/index.html +++ b/images/docker-freshrss/index.html @@ -1,4 +1,4 @@ - freshrss - LinuxServer.io

    linuxserver/freshrss

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Freshrss is a free, self-hostable aggregator for rss feeds.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui set up wizard at http://serverIP:port

    For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for "host" of your database server.

    Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + freshrss - LinuxServer.io       

    linuxserver/freshrss

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Freshrss is a free, self-hostable aggregator for rss feeds.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui set up wizard at http://serverIP:port

    For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for "host" of your database server.

    Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       freshrss:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Local storage for freshrss site files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it freshrss /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f freshrss
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' freshrss
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/freshrss:latest

    Versions

    • 21.10.22: - Fix cron init to properly migrate existing installations to new app location.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multi arch and pipeline logic.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 17.03.18: - Update nginx config to resolve api not working.
    • 08.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 08.10.16: - Add Sqlite support for standalone operation.
    • 27.09.16: - Fix for cron job.
    • 11.09.16: - Add layer badges to README.
    • 23.11.15: - Update dependencies to latest requirements.
    • 21.08.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it freshrss /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f freshrss
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' freshrss
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/freshrss:latest

    Versions

    • 21.10.22: - Fix cron init to properly migrate existing installations to new app location.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multi arch and pipeline logic.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 17.03.18: - Update nginx config to resolve api not working.
    • 08.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 08.10.16: - Add Sqlite support for standalone operation.
    • 27.09.16: - Fix for cron job.
    • 11.09.16: - Add layer badges to README.
    • 23.11.15: - Update dependencies to latest requirements.
    • 21.08.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-gazee/index.html b/images/docker-gazee/index.html index 07d2553522..431f29ba14 100644 --- a/images/docker-gazee/index.html +++ b/images/docker-gazee/index.html @@ -1,4 +1,4 @@ - gazee - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/gazee

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v6-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + gazee - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/gazee

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v6-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=gazee \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -28,4 +28,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4242 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation

    Volume Mappings (-v)

    Volume Function
    /config Where Gazee should store config files.
    /comics Path to comics folder.
    /mylar Path to Mylar DB.
    /certs Where SSL certs should be stored.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    Webui can be found at your-ip:4242

    Default username and password for the web interface:

    • Username: admin
    • Password: gazee

    Click the gear icon to go to the settings page.

    Change the default admin password or add a new admin and remove the admin user altogether.

    Comic path should be set to /comics

    Optional Mylar DB path should be set to /mylar

    Optional path for certificates and keys should be set to /certs

    After you update the settings, Gazee will restart and begin an intial scan of your comic library.

    Happy Reading!

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it gazee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gazee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' gazee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/gazee

    Versions

    • 27.03.19: - Deprecate image and get in semi working state.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 30.12.17: - Ensure version 11 of cherrypy.
    • 07.12.17: - Initial Release.
    \ No newline at end of file +

    Application Setup

    Webui can be found at your-ip:4242

    Default username and password for the web interface:

    • Username: admin
    • Password: gazee

    Click the gear icon to go to the settings page.

    Change the default admin password or add a new admin and remove the admin user altogether.

    Comic path should be set to /comics

    Optional Mylar DB path should be set to /mylar

    Optional path for certificates and keys should be set to /certs

    After you update the settings, Gazee will restart and begin an intial scan of your comic library.

    Happy Reading!

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it gazee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gazee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' gazee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/gazee

    Versions

    • 27.03.19: - Deprecate image and get in semi working state.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 30.12.17: - Ensure version 11 of cherrypy.
    • 07.12.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-gmail-order-bot/index.html b/images/docker-gmail-order-bot/index.html index 3f84111413..2c578343bd 100644 --- a/images/docker-gmail-order-bot/index.html +++ b/images/docker-gmail-order-bot/index.html @@ -1,4 +1,4 @@ - gmail-order-bot - LinuxServer.io

    lsiodev/gmail-order-bot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it.

    The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account.

    The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion.

    By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details:

    const Discord = require('discord.js');
    + gmail-order-bot - LinuxServer.io       

    lsiodev/gmail-order-bot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it.

    The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account.

    The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion.

    By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details:

    const Discord = require('discord.js');
     const YAML = require('yaml');
     const discordtoken = process.env.DISCORD_TOKEN;
     const roomid = process.env.DISCORD_ROOM
    @@ -42,4 +42,4 @@ exports.orderbot = async function(order) {
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    BOT_NAME=discord On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots)
    LOOP_TIME=60 Time in seconds to reach into gmail and get new messages to process

    Volume Mappings (-v)

    Volume Function
    /config Path to gmail tokens and custom/default bots

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it gmail-order-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gmail-order-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' gmail-order-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/lsiodev/gmail-order-bot:latest

    Versions

    • 06.07.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it gmail-order-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gmail-order-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' gmail-order-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/lsiodev/gmail-order-bot:latest

    Versions

    • 06.07.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-grav/index.html b/images/docker-grav/index.html index 6cba9fa0c3..6161965782 100644 --- a/images/docker-grav/index.html +++ b/images/docker-grav/index.html @@ -1,4 +1,4 @@ - grav - LinuxServer.io

    linuxserver/grav

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Grav is a Fast, Simple, and Flexible, file-based Web-platform.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    For more information check out the Grav documentation. Our image includes the grav-admin plugin.

    To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. docker exec -it -w /app/www/public grav bin/gpm

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + grav - LinuxServer.io       

    linuxserver/grav

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Grav is a Fast, Simple, and Flexible, file-based Web-platform.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    For more information check out the Grav documentation. Our image includes the grav-admin plugin.

    To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. docker exec -it -w /app/www/public grav bin/gpm

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       grav:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Port for web frontend

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it grav /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grav
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' grav
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/grav:latest

    Versions

    • 11.12.22: - Rebase to Alpine 3.17, PHP 8.1.
    • 05.09.22: - All php to read envs passed to container.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 03.09.21: - Added support for Redis caching.
    • 01.07.21: - Rebase to Alpine 3.14.
    • 09.04.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it grav /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grav
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' grav
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/grav:latest

    Versions

    • 11.12.22: - Rebase to Alpine 3.17, PHP 8.1.
    • 05.09.22: - All php to read envs passed to container.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 03.09.21: - Added support for Redis caching.
    • 01.07.21: - Rebase to Alpine 3.14.
    • 09.04.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-grocy/index.html b/images/docker-grocy/index.html index b25a1138b5..e0f50ce0f9 100644 --- a/images/docker-grocy/index.html +++ b/images/docker-grocy/index.html @@ -1,4 +1,4 @@ - grocy - LinuxServer.io

    linuxserver/grocy

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

    Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool

    For more information on grocy visit their website and check it out: https://grocy.info

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + grocy - LinuxServer.io       

    linuxserver/grocy

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

    Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool

    For more information on grocy visit their website and check it out: https://grocy.info

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       grocy:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 will map the container's port 80 to port 9283 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London for specifying your timezone

    Volume Mappings (-v)

    Volume Function
    /config this will store any uploaded data on the docker host

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it grocy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grocy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' grocy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/grocy:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.08.21: - Rebase to Alpine 3.14 and PHP 8.
    • 25.07.21: - Add 'int','json' and 'zlib' PHP extensions.
    • 10.05.21: - Reduce image size.
    • 08.04.21: - Update docs to reflect jenkins builder changes.
    • 17.02.21: - Rebasing to alpine 3.13.
    • 26.01.21: - Add 'ldap' PHP extension.
    • 22.12.20: - Add 'ctype' PHP extension.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Add 'gd' PHP extension.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 27.12.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it grocy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grocy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' grocy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/grocy:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.08.21: - Rebase to Alpine 3.14 and PHP 8.
    • 25.07.21: - Add 'int','json' and 'zlib' PHP extensions.
    • 10.05.21: - Reduce image size.
    • 08.04.21: - Update docs to reflect jenkins builder changes.
    • 17.02.21: - Rebasing to alpine 3.13.
    • 26.01.21: - Add 'ldap' PHP extension.
    • 22.12.20: - Add 'ctype' PHP extension.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Add 'gd' PHP extension.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 27.12.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-guacd/index.html b/images/docker-guacd/index.html index b47cec9605..11d5240c9c 100644 --- a/images/docker-guacd/index.html +++ b/images/docker-guacd/index.html @@ -1,4 +1,4 @@ - guacd - LinuxServer.io

    linuxserver/guacd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + guacd - LinuxServer.io       

    linuxserver/guacd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       guacd:
    @@ -13,4 +13,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/guacd:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4822 Port Guacamole server listens on

    Environment Variables (-e)

    Env Function

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it guacd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f guacd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' guacd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/guacd:latest

    Versions

    • 11.03.22: - Bump to 1.4.0.
    • 15.05.21: - Add terminus font for SSH support.
    • 08.05.21: - Bump to 1.3.0, rebase to Alpine.
    • 27.07.20: - Bump to 1.2.0.
    • 17.04.20: - Bump back 1.1.0, rebase to focal
    • 08.02.20: - Bump to 1.1.0.
    • 25.05.19: - Initial Release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it guacd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f guacd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' guacd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/guacd:latest

    Versions

    • 11.03.22: - Bump to 1.4.0.
    • 15.05.21: - Add terminus font for SSH support.
    • 08.05.21: - Bump to 1.3.0, rebase to Alpine.
    • 27.07.20: - Bump to 1.2.0.
    • 17.04.20: - Bump back 1.1.0, rebase to focal
    • 08.02.20: - Bump to 1.1.0.
    • 25.05.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-habridge/index.html b/images/docker-habridge/index.html index c58693719c..1b8d2de650 100644 --- a/images/docker-habridge/index.html +++ b/images/docker-habridge/index.html @@ -1,4 +1,4 @@ - habridge - LinuxServer.io

    linuxserver/habridge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as "On", "Off" and "brightness" commands of the hue protocol. This bridge can control most devices that have a distinct API.

    In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge.

    This bridge was built to help put the Internet of Things together.

    For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking.

    For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + habridge - LinuxServer.io       

    linuxserver/habridge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as "On", "Off" and "brightness" commands of the hue protocol. This bridge can control most devices that have a distinct API.

    In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge.

    This bridge was built to help put the Internet of Things together.

    For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking.

    For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       habridge:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 WebUI
    50000 HABridge communication port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    SEC_KEY=<Your Key To Encrypt Security Data> Key used to secure communication.
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where HABridge stores config files and data.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it habridge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f habridge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' habridge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/habridge:latest

    Versions

    • 11.12.22: - Rebasing to alpine 3.17.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to alpine 3.8.
    • 12.04.18: - Add workaround to bind to port 80 if needed.
    • 08.04.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it habridge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f habridge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' habridge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/habridge:latest

    Versions

    • 11.12.22: - Rebasing to alpine 3.17.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to alpine 3.8.
    • 12.04.18: - Add workaround to bind to port 80 if needed.
    • 08.04.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-headphones/index.html b/images/docker-headphones/index.html index f8a15b288d..923eb04759 100644 --- a/images/docker-headphones/index.html +++ b/images/docker-headphones/index.html @@ -1,4 +1,4 @@ - headphones - LinuxServer.io

    linuxserver/headphones

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent and Blackhole.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + headphones - LinuxServer.io       

    linuxserver/headphones

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, µTorrent and Blackhole.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       headphones:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8181 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /downloads ISOs.
    /music Your music directory.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it headphones /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f headphones
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' headphones
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/headphones:latest

    Versions

    • 02.02.22: - Rebasing to alpine 3.15. Updating to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 09.05.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Rebase to alpine 3.8.
    • 03.04.18: - Remove forced port and update README.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add flac package to handle FLAC based .cue.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Reduce layer, replace broken source for shntool.
    • 07.02.17: - Rebase to alpine 3.5.
    • 23.12.16: - Fix capitalisation in README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, compile shntool.
    • 08.08.16: - Rebase to alpine linux.
    • 18.07.15: - Inital Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it headphones /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f headphones
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' headphones
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/headphones:latest

    Versions

    • 02.02.22: - Rebasing to alpine 3.15. Updating to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 09.05.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Rebase to alpine 3.8.
    • 03.04.18: - Remove forced port and update README.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add flac package to handle FLAC based .cue.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Reduce layer, replace broken source for shntool.
    • 07.02.17: - Rebase to alpine 3.5.
    • 23.12.16: - Fix capitalisation in README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, compile shntool.
    • 08.08.16: - Rebase to alpine linux.
    • 18.07.15: - Inital Release
    \ No newline at end of file diff --git a/images/docker-healthchecks/index.html b/images/docker-healthchecks/index.html index 1622d776f3..b5706598a7 100644 --- a/images/docker-healthchecks/index.html +++ b/images/docker-healthchecks/index.html @@ -1,4 +1,4 @@ - healthchecks - LinuxServer.io

    linuxserver/healthchecks

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the WebUI at :8000. For more information, check out Healthchecks.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + healthchecks - LinuxServer.io       

    linuxserver/healthchecks

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the WebUI at :8000. For more information, check out Healthchecks.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       healthchecks:
    @@ -61,4 +61,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 Healthchecks Web UI
    2525 Port for inbound SMTP pings

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    SITE_ROOT= The site's top-level URL and the port it listens to if differrent than 80 or 443 (e.g., https://healthchecks.example.com:8000)
    SITE_NAME= The site's name (e.g., "Example Corp HealthChecks")
    DEFAULT_FROM_EMAIL= From email for alerts
    EMAIL_HOST= SMTP host
    EMAIL_PORT= SMTP port
    EMAIL_HOST_USER= SMTP user
    EMAIL_HOST_PASSWORD= SMTP password
    EMAIL_USE_TLS= Use TLS for SMTP (True or False)
    SUPERUSER_EMAIL= Superuser email
    SUPERUSER_PASSWORD= Superuser password
    REGENERATE_SETTINGS= Defaults to False. Set to True to always override the local_settings.py file with values from environment variables. Do not set to True if you have made manual modifications to this file.
    ALLOWED_HOSTS= Array of valid hostnames for the server ["test.com","test2.com"] (default: ["*"])
    APPRISE_ENABLED= Defaults to False. A boolean that turns on/off the Apprise integration (https://github.com/caronc/apprise)
    DEBUG= Defaults to True. Debug mode relaxes CSRF protections and increases logging verbosity but should be disabled for production instances as it will impact performance and security.
    INTEGRATIONS_ALLOW_PRIVATE_IPS= Defaults to False. Set to True to allow integrations to connect to private IP addresses.
    PING_EMAIL_DOMAIN= The domain to use for generating ping email addresses.
    SECRET_KEY= A secret key used for cryptographic signing. Will generate a secure value if one is not supplied
    SITE_LOGO_URL= Full URL to custom site logo

    Volume Mappings (-v)

    Volume Function
    /config Database and healthchecks config directory

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it healthchecks /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f healthchecks
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' healthchecks
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/healthchecks:latest

    Versions

    • 22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS.
    • 18.10.22: - Add curl-dev to fix broken pip builds.
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 27.09.22: - Fix sending of Email Reports
    • 08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0)
    • 11.11.21: - Add Apprise to Docker as in v1.24.0
    • 10.09.21: - Fix creation of superuser
    • 07.08.21: - Update custom logo handling to support changes in v1.22.0
    • 11.07.21: - Rebase to Alpine 3.14.
    • 18.05.21: - Add linuxserver wheel index.
    • 11.01.21: - Add libffi-dev to allow building of python cryptography lib.
    • 19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard
    • 19.12.19: - Rebasing to alpine 3.11.
    • 31.10.19: - Add postgres client and fix config for CSRF.
    • 23.10.19: - Allow to create superuser
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.02.19: - Adding mysql libs needed for using a database.
    • 11.10.18: - adding pipeline logic and multi arching release
    • 15.11.17: - git pull is now in Dockerfile so each tagged container contains the same code version
    • 17.10.17: - Fixed local_settings.py output
    • 27.09.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it healthchecks /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f healthchecks
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' healthchecks
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/healthchecks:latest

    Versions

    • 22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS.
    • 18.10.22: - Add curl-dev to fix broken pip builds.
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 27.09.22: - Fix sending of Email Reports
    • 08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0)
    • 11.11.21: - Add Apprise to Docker as in v1.24.0
    • 10.09.21: - Fix creation of superuser
    • 07.08.21: - Update custom logo handling to support changes in v1.22.0
    • 11.07.21: - Rebase to Alpine 3.14.
    • 18.05.21: - Add linuxserver wheel index.
    • 11.01.21: - Add libffi-dev to allow building of python cryptography lib.
    • 19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard
    • 19.12.19: - Rebasing to alpine 3.11.
    • 31.10.19: - Add postgres client and fix config for CSRF.
    • 23.10.19: - Allow to create superuser
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.02.19: - Adding mysql libs needed for using a database.
    • 11.10.18: - adding pipeline logic and multi arching release
    • 15.11.17: - git pull is now in Dockerfile so each tagged container contains the same code version
    • 17.10.17: - Fixed local_settings.py output
    • 27.09.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-hedgedoc/index.html b/images/docker-hedgedoc/index.html index 9aac3876fb..d157345e91 100644 --- a/images/docker-hedgedoc/index.html +++ b/images/docker-hedgedoc/index.html @@ -1,4 +1,4 @@ - hedgedoc - LinuxServer.io

    linuxserver/hedgedoc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    HedgeDoc gives you access to all your files wherever you are.

    HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    HedgeDoc web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT)

    Full list of HedgeDoc options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + hedgedoc - LinuxServer.io       

    linuxserver/hedgedoc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    HedgeDoc gives you access to all your files wherever you are.

    HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    HedgeDoc web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT)

    Full list of HedgeDoc options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       hedgedoc:
    @@ -45,4 +45,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Web gui port (internal port also needs to be changed if accessing at port other than 80, 443 and 3000).

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    DB_HOST=<hostname or ip> Host address of mysql database
    DB_PORT=3306 Port to access mysql database default is 3306
    DB_USER=hedgedoc Database user
    DB_PASS=<secret password> Database password
    DB_NAME=hedgedoc Database name
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CMD_DOMAIN=localhost The address the gui will be accessed at (ie. 192.168.1.1 or hedgedoc.domain.com).
    CMD_URL_ADDPORT=false Set to true if using a port other than 80 or 443.
    CMD_PROTOCOL_USESSL=false Set to true if accessing over https via reverse proxy.
    CMD_PORT=3000 If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. CMD_PORT=5000) and change the port mapping accordingly (5000:5000).
    CMD_ALLOW_ORIGIN=['localhost'] Comma-separated list of allowed hostnames

    Volume Mappings (-v)

    Volume Function
    /config HedgeDoc config and configurable files

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hedgedoc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hedgedoc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hedgedoc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/hedgedoc:latest

    Versions

    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 10.04.22: - Use python3 to build node sqlite3.
    • 10.02.22: - Rebase to Alpine 3.15.
    • 09.02.22: - Add optional var CMD_PORT that is needed for accessing at port other than 80, 443 and 3000.
    • 09.12.21: - Add optional var CMD_PROTOCOL_USESSL that is needed for reverse proxy.
    • 07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent.
    • 15.10.21: - Add required env var CMD_DOMAIN.
    • 05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public.
    • 03.05.21: - Remove deprecated sequalizerc step.
    • 22.12.20: - Initial release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hedgedoc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hedgedoc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hedgedoc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/hedgedoc:latest

    Versions

    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 10.04.22: - Use python3 to build node sqlite3.
    • 10.02.22: - Rebase to Alpine 3.15.
    • 09.02.22: - Add optional var CMD_PORT that is needed for accessing at port other than 80, 443 and 3000.
    • 09.12.21: - Add optional var CMD_PROTOCOL_USESSL that is needed for reverse proxy.
    • 07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent.
    • 15.10.21: - Add required env var CMD_DOMAIN.
    • 05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public.
    • 03.05.21: - Remove deprecated sequalizerc step.
    • 22.12.20: - Initial release
    \ No newline at end of file diff --git a/images/docker-heimdall/index.html b/images/docker-heimdall/index.html index 26b792fbaa..0b116f031d 100644 --- a/images/docker-heimdall/index.html +++ b/images/docker-heimdall/index.html @@ -1,4 +1,4 @@ - heimdall - LinuxServer.io

    linuxserver/heimdall

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Heimdall releases.
    development Latest commit from the github 2.x branch.

    Application Setup

    Access the web gui at http://SERVERIP:PORT

    Adding password protection

    This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>. Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + heimdall - LinuxServer.io       

    linuxserver/heimdall

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Heimdall releases.
    development Latest commit from the github 2.x branch.

    Application Setup

    Access the web gui at http://SERVERIP:PORT

    Adding password protection

    This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>. Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       heimdall:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui
    443 https gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it heimdall /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f heimdall
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:latest

    Versions

    • 14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 04.11.22: - Build commits to upstream branch 2.x for the development tag.
    • 13.03.21: - Make searchproviders.yaml user configurable.
    • 10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 17.08.20: - Add php7-curl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.01.20: - Use nginx from baseimage.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 16.07.19: - Save laravel.log to /config/log/heimdall.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 01.04.19: - Fix permission detect logic.
    • 26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.03.19: - Clarify docker image tags in readme.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.18: - Generate random app key in .env for new installs.
    • 20.11.18: - Upgrade baseimage packages during build.
    • 04.11.18: - Add php7-zip.
    • 31.10.18: - Add queue service.
    • 17.10.18: - Symlink avatars folder.
    • 16.10.18: - Updated fastcgi_params for user login support.
    • 07.10.18: - Symlink .env rather than copy. It now resides under /config/www
    • 30.09.18: - Multi-arch image. Move .env to /config.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place
    • 12.02.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it heimdall /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f heimdall
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' heimdall
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/heimdall:latest

    Versions

    • 14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 04.11.22: - Build commits to upstream branch 2.x for the development tag.
    • 13.03.21: - Make searchproviders.yaml user configurable.
    • 10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 17.08.20: - Add php7-curl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.01.20: - Use nginx from baseimage.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 16.07.19: - Save laravel.log to /config/log/heimdall.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 01.04.19: - Fix permission detect logic.
    • 26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.03.19: - Clarify docker image tags in readme.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.18: - Generate random app key in .env for new installs.
    • 20.11.18: - Upgrade baseimage packages during build.
    • 04.11.18: - Add php7-zip.
    • 31.10.18: - Add queue service.
    • 17.10.18: - Symlink avatars folder.
    • 16.10.18: - Updated fastcgi_params for user login support.
    • 07.10.18: - Symlink .env rather than copy. It now resides under /config/www
    • 30.09.18: - Multi-arch image. Move .env to /config.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place
    • 12.02.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-homeassistant/index.html b/images/docker-homeassistant/index.html index eb7587249e..3154eead36 100644 --- a/images/docker-homeassistant/index.html +++ b/images/docker-homeassistant/index.html @@ -1,4 +1,4 @@ - homeassistant - LinuxServer.io

    linuxserver/homeassistant

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image is based on Home Assistant Core.

    The Webui can be found at http://your-ip:8123. Follow the wizard to set up Home Assistant.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + homeassistant - LinuxServer.io       

    linuxserver/homeassistant

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image is based on Home Assistant Core.

    The Webui can be found at http://your-ip:8123. Follow the wizard to set up Home Assistant.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       homeassistant:
    @@ -30,4 +30,4 @@
     

    Host vs. Bridge

    Home Assistant can discover and automatically configure zeroconf/mDNS and UPnP devices on your network. In order for this to work you must create the container with --net=host.

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8123 Application WebUI, only use this if you are not using host mode.

    Networking (--net)

    Parameter Function
    --net=host Shares host networking with container. Required for some devices to be discovered by Home Assistant.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify your TimeZone e.g. Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Home Assistant config storage path.

    Device Mappings (--device)

    Parameter Function
    /path/to/device For passing through USB, serial or gpio devices.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it homeassistant /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f homeassistant
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' homeassistant
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/homeassistant:latest

    Versions

    • 16.11.22: - Fix the dep conflict for google calendar.
    • 23.09.22: - Migrate to s6v3.
    • 29.07.22: - Improve usb device permission fix.
    • 07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels.
    • 07.05.22: - Build matplotlib with the same Numpy version as HA req.
    • 31.03.22: - Install pycups.
    • 07.03.22: - Install PySwitchbot.
    • 02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size.
    • 04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel.
    • 12.12.21: - Use the new build.yaml to determine HA base version.
    • 25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels.
    • 13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly.
    • 13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly.
    • 12.09.21: - Rebase to alpine 3.14. Build on native armhf.
    • 09.08.21: - Fixed broken build caused by missing dependency.
    • 01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant.
    • 25.02.21: - Add python dependencies from homeassistant base image.
    • 07.02.21: - Fix building from the wrong requirement file. Add ssh client & external DB libs.
    • 06.02.21: - Add iputils so ping works as non root user.
    • 30.01.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it homeassistant /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f homeassistant
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' homeassistant
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/homeassistant:latest

    Versions

    • 16.11.22: - Fix the dep conflict for google calendar.
    • 23.09.22: - Migrate to s6v3.
    • 29.07.22: - Improve usb device permission fix.
    • 07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels.
    • 07.05.22: - Build matplotlib with the same Numpy version as HA req.
    • 31.03.22: - Install pycups.
    • 07.03.22: - Install PySwitchbot.
    • 02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size.
    • 04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel.
    • 12.12.21: - Use the new build.yaml to determine HA base version.
    • 25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels.
    • 13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly.
    • 13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly.
    • 12.09.21: - Rebase to alpine 3.14. Build on native armhf.
    • 09.08.21: - Fixed broken build caused by missing dependency.
    • 01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant.
    • 25.02.21: - Add python dependencies from homeassistant base image.
    • 07.02.21: - Fix building from the wrong requirement file. Add ssh client & external DB libs.
    • 06.02.21: - Add iputils so ping works as non root user.
    • 30.01.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-htpcmanager/index.html b/images/docker-htpcmanager/index.html index 17783899e8..cbc18f4ede 100644 --- a/images/docker-htpcmanager/index.html +++ b/images/docker-htpcmanager/index.html @@ -1,4 +1,4 @@ - htpcmanager - LinuxServer.io

    linuxserver/htpcmanager

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Htpcmanager is a front end for many htpc related applications.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + htpcmanager - LinuxServer.io       

    linuxserver/htpcmanager

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Htpcmanager is a front end for many htpc related applications.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       htpcmanager:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8085 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it htpcmanager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f htpcmanager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' htpcmanager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/htpcmanager:latest

    Versions

    • 24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo.
    • 08.04.21: - Fix build.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Rebase to alpine 3.12, python3, change upstream project
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 26.09.16: - Add back cherrypy after removal from baseimage.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 14.01.15: - Remove hardcoded loglevel from the run command, set in webui
    • 19.09.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it htpcmanager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f htpcmanager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' htpcmanager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/htpcmanager:latest

    Versions

    • 24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo.
    • 08.04.21: - Fix build.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Rebase to alpine 3.12, python3, change upstream project
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 26.09.16: - Add back cherrypy after removal from baseimage.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 14.01.15: - Remove hardcoded loglevel from the run command, set in webui
    • 19.09.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-hydra/index.html b/images/docker-hydra/index.html index 46babc1f7e..73f5c0d015 100644 --- a/images/docker-hydra/index.html +++ b/images/docker-hydra/index.html @@ -1,4 +1,4 @@ - hydra - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/hydra

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Hydra is a meta search for NZB indexers and the "spiritual successor" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + hydra - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/hydra

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Hydra is a meta search for NZB indexers and the "spiritual successor" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       hydra:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5075 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where hydra should store config files.
    /downloads NZB download folder.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    THIS IMAGE HAS BEEN DEPRECATED.

    Please use linuxserver/nzbhydra2 instead.

    The web interface is at <your ip>:5075 , to set up indexers and connections to your nzb download applications.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hydra /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hydra
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/hydra

    Versions

    • 04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users.
    • 14.10.16: - Add version layer information.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 25.01.16: - Initial Release.
    \ No newline at end of file +

    Application Setup

    THIS IMAGE HAS BEEN DEPRECATED.

    Please use linuxserver/nzbhydra2 instead.

    The web interface is at <your ip>:5075 , to set up indexers and connections to your nzb download applications.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hydra /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hydra
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/hydra

    Versions

    • 04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users.
    • 14.10.16: - Add version layer information.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 25.01.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-hydra2/index.html b/images/docker-hydra2/index.html index 2f7394132a..802fc7d84a 100644 --- a/images/docker-hydra2/index.html +++ b/images/docker-hydra2/index.html @@ -1,4 +1,4 @@ - hydra2 - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2.

    linuxserver/hydra2

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Hydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/hydra2:v2.10.2-ls49

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable releases
    dev Prereleases from their GitHub

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + hydra2 - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2.

    linuxserver/hydra2

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Hydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/hydra2:v2.10.2-ls49

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable releases
    dev Prereleases from their GitHub

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=hydra2 \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -26,4 +26,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5076 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where hydra2 should store config files.
    /downloads NZB download folder.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    Docker Mods

    Docker Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/hydra2

    Versions

    • 19.04.20: - Deprecated. New repo at linuxserver/docker-nzbhydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    \ No newline at end of file +

    Application Setup

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    Docker Mods

    Docker Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it hydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' hydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/hydra2

    Versions

    • 19.04.20: - Deprecated. New repo at linuxserver/docker-nzbhydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ipfs/index.html b/images/docker-ipfs/index.html index 074b838cfb..7f25a4e9f4 100644 --- a/images/docker-ipfs/index.html +++ b/images/docker-ipfs/index.html @@ -1,4 +1,4 @@ - ipfs - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore.

    linuxserver/ipfs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them.

    Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE

    Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month.

    For more on using IPFS please read the docs here

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + ipfs - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore.

    linuxserver/ipfs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them.

    Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE

    Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month.

    For more on using IPFS please read the docs here

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       ipfs:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 The port for the IPFS web UI
    4001 Peering port, this is the only port you should expose to the internet
    5001 API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on
    8080 Gateway Port, actually serves IPFS content
    443 HTTPS port for web UI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config IPFS storage and config files/logs

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ipfs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ipfs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ipfs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ipfs

    Versions

    • 02.02.22: - Deprecate.
    • 19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14.
    • 01.04.21: - Add migration bins to image to support upgrades.
    • 24.02.20: - Rebase to Alpine 3.13.
    • 09.07.19: - Initial version.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ipfs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ipfs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ipfs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ipfs

    Versions

    • 02.02.22: - Deprecate.
    • 19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14.
    • 01.04.21: - Add migration bins to image to support upgrades.
    • 24.02.20: - Rebase to Alpine 3.13.
    • 09.07.19: - Initial version.
    \ No newline at end of file diff --git a/images/docker-jackett/index.html b/images/docker-jackett/index.html index d02dbcb7a5..0eda7fa44f 100644 --- a/images/docker-jackett/index.html +++ b/images/docker-jackett/index.html @@ -1,4 +1,4 @@ - jackett - LinuxServer.io

    linuxserver/jackett

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Jackett Releases
    development Latest Jackett Releases

    Application Setup

    The web interface is at <your-ip>:9117 , configure various trackers and connections to other apps there. More info at Jackett.

    Disable autoupdates in the webui to prevent jackett crashing, the image is refreshed when new versions are released.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + jackett - LinuxServer.io       

    linuxserver/jackett

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Jackett Releases
    development Latest Jackett Releases

    Application Setup

    The web interface is at <your-ip>:9117 , configure various trackers and connections to other apps there. More info at Jackett.

    Disable autoupdates in the webui to prevent jackett crashing, the image is refreshed when new versions are released.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       jackett:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9117 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    AUTO_UPDATE=true Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default)
    RUN_OPTS=<run options here> Optionally specify additional arguments to be passed.

    Volume Mappings (-v)

    Volume Function
    /config Where Jackett should store its config file.
    /downloads Path to torrent blackhole.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it jackett /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jackett
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' jackett
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/jackett:latest

    Versions

    • 10.05.22: - Rebase to Ubuntu Focal.
    • 24.05.20: - Allow user to optionally enable auto updates.
    • 31.12.19: - Remove agressive startup chowning.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.18: - Ensure root ownership of Jackett files.
    • 13.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based.
    • 09.02.17: - Rebase to alpine 3.5.
    • 29.10.16: - Call python2 from edge main to satisfy new mono dependency.
    • 14.10.16: - Add version layer information.
    • 22.09.16: - Remove autoupdate, tidy up Dockerfile.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 06.08.16: - Rebase to alpine linux for smaller image.
    • 25.01.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it jackett /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jackett
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' jackett
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/jackett:latest

    Versions

    • 10.05.22: - Rebase to Ubuntu Focal.
    • 24.05.20: - Allow user to optionally enable auto updates.
    • 31.12.19: - Remove agressive startup chowning.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.18: - Ensure root ownership of Jackett files.
    • 13.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based.
    • 09.02.17: - Rebase to alpine 3.5.
    • 29.10.16: - Call python2 from edge main to satisfy new mono dependency.
    • 14.10.16: - Add version layer information.
    • 22.09.16: - Remove autoupdate, tidy up Dockerfile.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 06.08.16: - Rebase to alpine linux for smaller image.
    • 25.01.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-jellyfin/index.html b/images/docker-jellyfin/index.html index 31f9cd2c01..3703858703 100644 --- a/images/docker-jellyfin/index.html +++ b/images/docker-jellyfin/index.html @@ -1,4 +1,4 @@ - jellyfin - LinuxServer.io

    linuxserver/jellyfin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Jellyfin releases
    nightly Nightly Jellyfin releases

    Application Setup

    Webui can be found at http://<your-ip>:8096

    More information can be found on the official documentation here.

    Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the jellyfin docker container.

    OpenMAX (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vcsm:/dev/vcsm
    + jellyfin - LinuxServer.io       

    linuxserver/jellyfin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Jellyfin releases
    nightly Nightly Jellyfin releases

    Application Setup

    Webui can be found at http://<your-ip>:8096

    More information can be found on the official documentation here.

    Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the jellyfin docker container.

    OpenMAX (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vcsm:/dev/vcsm
     --device=/dev/vchiq:/dev/vchiq
     -v /opt/vc/lib:/opt/vc/lib
     

    V4L2 (Raspberry Pi)

    Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

    --device=/dev/video10:/dev/video10
    @@ -45,4 +45,4 @@
       -p 1900:1900/udp \
     

    The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it jellyfin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jellyfin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' jellyfin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/jellyfin:latest

    Versions

    • 07.12.22: - Rebase master to Jammy, migrate to s6v3.
    • 11.06.22: - Switch to upstream repo's ffmpeg5 build.
    • 05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors.
    • 25.12.21: - Fix video device group perms error message.
    • 10.12.21: - Rework readme, disable template sync.
    • 22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper.
    • 23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the bionic tag.
    • 21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW.
    • 20.01.21: - Add Jellyfin Binary Environmentals
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.11.20: - Rebase to Focal, branch off Bionic.
    • 22.07.20: - Ingest releases from Jellyfin repo.
    • 28.04.20: - Replace MMAL/OMX dependency device /dev/vc-mem with /dev/vcsm as the former was not sufficient for raspbian.
    • 11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder.
    • 11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under /config).
    • 30.01.20: - Add nightly tag.
    • 09.01.20: - Add Pi OpenMax support.
    • 02.10.19: - Improve permission fixing for render & dvb devices.
    • 31.07.19: - Add AMD drivers for vaapi support on x86.
    • 13.06.19: - Add Intel drivers for vaapi support on x86.
    • 07.06.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it jellyfin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jellyfin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' jellyfin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/jellyfin:latest

    Versions

    • 07.12.22: - Rebase master to Jammy, migrate to s6v3.
    • 11.06.22: - Switch to upstream repo's ffmpeg5 build.
    • 05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors.
    • 25.12.21: - Fix video device group perms error message.
    • 10.12.21: - Rework readme, disable template sync.
    • 22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper.
    • 23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the bionic tag.
    • 21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW.
    • 20.01.21: - Add Jellyfin Binary Environmentals
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.11.20: - Rebase to Focal, branch off Bionic.
    • 22.07.20: - Ingest releases from Jellyfin repo.
    • 28.04.20: - Replace MMAL/OMX dependency device /dev/vc-mem with /dev/vcsm as the former was not sufficient for raspbian.
    • 11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder.
    • 11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under /config).
    • 30.01.20: - Add nightly tag.
    • 09.01.20: - Add Pi OpenMax support.
    • 02.10.19: - Improve permission fixing for render & dvb devices.
    • 31.07.19: - Add AMD drivers for vaapi support on x86.
    • 13.06.19: - Add Intel drivers for vaapi support on x86.
    • 07.06.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-jenkins-builder/index.html b/images/docker-jenkins-builder/index.html index 048bcfc22b..b25f0a1627 100644 --- a/images/docker-jenkins-builder/index.html +++ b/images/docker-jenkins-builder/index.html @@ -1,4 +1,4 @@ - jenkins-builder - LinuxServer.io

    linuxserver/jenkins-builder

    Expects to run as part of the LSIO CI process. Not for public consumption.

    Running against remote project

    docker run --rm \
    + jenkins-builder - LinuxServer.io       

    linuxserver/jenkins-builder

    Expects to run as part of the LSIO CI process. Not for public consumption.

    Running against remote project

    docker run --rm \
       -e CONTAINER_NAME=${CONTAINER_NAME} \
       -v ${TEMPDIR}:/ansible/jenkins \
       lscr.io/linuxserver/jenkins-builder:latest
    @@ -16,4 +16,4 @@ docker build \
       --pull \
       -t lscr.io/linuxserver/jenkins-builder:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    The following line is only in this repo for loop testing:

    • { date: "01.01.50:", desc: "I am the release message for this internal repo." }
    \ No newline at end of file diff --git a/images/docker-kanzi/index.html b/images/docker-kanzi/index.html index c4691c0eee..40b04c1566 100644 --- a/images/docker-kanzi/index.html +++ b/images/docker-kanzi/index.html @@ -1,4 +1,4 @@ - kanzi - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/kanzi

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Initial setup

    • Once you start the container for the first time, you need to perform some steps before use.
    • Create an Amazon Developer Account here.
    • Open a terminal in the /config directory of the docker container docker exec -itw /config kanzi bash
    • Enter lexigram login --no-browser true to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter.
    • Edit the file kodi.config according to your local setup and this will be used by the included gunicorn server to respond to requests.
    • Restart the container to automatically deploy the Kanzi skill.
    • Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively.

    Subfolder

    location /kanzi {
    + kanzi - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/kanzi

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Initial setup

    • Once you start the container for the first time, you need to perform some steps before use.
    • Create an Amazon Developer Account here.
    • Open a terminal in the /config directory of the docker container docker exec -itw /config kanzi bash
    • Enter lexigram login --no-browser true to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter.
    • Edit the file kodi.config according to your local setup and this will be used by the included gunicorn server to respond to requests.
    • Restart the container to automatically deploy the Kanzi skill.
    • Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively.

    Subfolder

    location /kanzi {
       rewrite           ^/kanzi/(.*)  /$1  break;
       proxy_pass         https://$IP-ADDRESS:8000;
       proxy_redirect     https://$IP-ADDRESS:8000 /kanzi;
    @@ -47,4 +47,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 Application Port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    INVOCATION_NAME=kanzi Specify an invocation name for this skill, use either kanzi or kod.
    URL_ENDPOINT=https://server.com/kanzi/ Specify the URL at which the webserver is reachable either https://kanzi.server.com/ or https://server.com/kanzi/ Note the trailing slash MUST be included.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kanzi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kanzi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kanzi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kanzi:latest

    Versions

    • 20.06.22: - Deprecate image.
    • 13.04.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kanzi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kanzi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kanzi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kanzi:latest

    Versions

    • 20.06.22: - Deprecate image.
    • 13.04.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-kasm/index.html b/images/docker-kasm/index.html index dfc7de2e78..d9145cb926 100644 --- a/images/docker-kasm/index.html +++ b/images/docker-kasm/index.html @@ -1,4 +1,4 @@ - kasm - LinuxServer.io

    linuxserver/kasm

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.

    The rendering of the graphical-based containers is powered by the open-source project KasmVNC.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Kasm releases
    develop Tip of develop

    Application Setup

    This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000.

    Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443

    Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path

    Access the installation wizard at https://your ip:3000 and follow the instructions there. Once setup is complete access https://your ip:443 and login with the credentials you entered during setup. The default users are:

    • admin@kasm.local
    • user@kasm.local

    Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.

    GPU Support

    During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass -e NVIDIA_VISIBLE_DEVICES=all or --gpus all and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation.

    Gamepad support

    In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data. Please see HERE for instructions on enabling gamepad support.

    Persistant profiles

    In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles. From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/, more infomation can be found HERE.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + kasm - LinuxServer.io       

    linuxserver/kasm

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.

    The rendering of the graphical-based containers is powered by the open-source project KasmVNC.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Kasm releases
    develop Tip of develop

    Application Setup

    This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000.

    Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443

    Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path

    Access the installation wizard at https://your ip:3000 and follow the instructions there. Once setup is complete access https://your ip:443 and login with the credentials you entered during setup. The default users are:

    • admin@kasm.local
    • user@kasm.local

    Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.

    GPU Support

    During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass -e NVIDIA_VISIBLE_DEVICES=all or --gpus all and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation.

    Gamepad support

    In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data. Please see HERE for instructions on enabling gamepad support.

    Persistant profiles

    In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles. From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/, more infomation can be found HERE.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       kasm:
    @@ -35,4 +35,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/kasm:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Kasm Installation wizard. (https)
    443 Kasm Workspaces interface. (https)

    Environment Variables (-e)

    Env Function
    KASM_PORT=443 Specify the port you bind to the outside for Kasm Workspaces.
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    DOCKER_HUB_USERNAME=USER Optionally specify a DockerHub Username to pull private images.
    DOCKER_HUB_PASSWORD=PASS Optionally specify a DockerHub password to pull private images.

    Volume Mappings (-v)

    Volume Function
    /opt Docker and installation storage.
    /profiles Optionally specify a path for persistent profile storage.
    /dev/input Optional for gamepad support.
    /run/udev/data Optional for gamepad support.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kasm /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kasm
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kasm
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kasm:latest

    Versions

    • 05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads.
    • 23.09.22: - Migrate to s6v3.
    • 02.07.22: - Initial Release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kasm /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kasm
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kasm
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kasm:latest

    Versions

    • 05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads.
    • 23.09.22: - Migrate to s6v3.
    • 02.07.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-kdenlive/index.html b/images/docker-kdenlive/index.html index 4388424b05..1169af8763 100644 --- a/images/docker-kdenlive/index.html +++ b/images/docker-kdenlive/index.html @@ -1,4 +1,4 @@ - kdenlive - LinuxServer.io

    linuxserver/kdenlive

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Hardware Acceleration (x86_64 only)

    In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for vaapi_device. Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm)

    vainfo --display drm --device /dev/dri/renderD128
    + kdenlive - LinuxServer.io       

    linuxserver/kdenlive

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    Hardware Acceleration (x86_64 only)

    In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for vaapi_device. Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm)

    vainfo --display drm --device /dev/dri/renderD128
     

    Intel/ATI/AMD

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri
     
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -39,4 +39,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Kdenlive desktop gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/
    KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores local files and settings

    Device Mappings (--device)

    Parameter Function
    /dev/dri Add this for hardware acceleration (Linux hosts only)

    Miscellaneous Options

    Parameter Function
    --shm-size= This might be needed to prevent crashing
    --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kdenlive /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kdenlive
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kdenlive
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kdenlive:latest

    Versions

    • 16.09.22: - Migrate to s6v3.
    • 09.03.22: - Update seccomp explanation.
    • 07.03.22: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it kdenlive /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kdenlive
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' kdenlive
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/kdenlive:latest

    Versions

    • 16.09.22: - Migrate to s6v3.
    • 09.03.22: - Update seccomp explanation.
    • 07.03.22: - Initial release.
    \ No newline at end of file diff --git a/images/docker-lazylibrarian/index.html b/images/docker-lazylibrarian/index.html index e0638aecae..dc2a816e2a 100644 --- a/images/docker-lazylibrarian/index.html +++ b/images/docker-lazylibrarian/index.html @@ -1,4 +1,4 @@ - lazylibrarian - LinuxServer.io

    linuxserver/lazylibrarian

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:5299/home, for more information check out Lazylibrarian.

    Calibredb import

    64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to /usr/bin/calibredb

    ffmpeg

    By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings > Processing > External Programs by setting the ffmpeg path to ffmpeg.

    Media folders

    We have set /books as optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional path if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + lazylibrarian - LinuxServer.io       

    linuxserver/lazylibrarian

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:5299/home, for more information check out Lazylibrarian.

    Calibredb import

    64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to /usr/bin/calibredb

    ffmpeg

    By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings > Processing > External Programs by setting the ffmpeg path to ffmpeg.

    Media folders

    We have set /books as optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional path if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       lazylibrarian:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5299 The port for the LazyLibrarian webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use e.g. Europe/London
    DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg Allows additional functionality to be added, e.g. the Calibredb import program (optional, more info below)

    Volume Mappings (-v)

    Volume Function
    /config LazyLibrarian config
    /downloads Download location
    /books Books location

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lazylibrarian /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lazylibrarian
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lazylibrarian
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lazylibrarian:latest

    Versions

    • 07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source.
    • 27.09.22: - Switch to Levenshtein, add cmake as build dep on armhf.
    • 07.05.22: - Rebase to Ubuntu Focal.
    • 22.05.21: - Make the paths clearer to the user, remove optional volume.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.10.19: - Changed gitlab download link.
    • 23.10.19: - Add python module Pillow.
    • 31.07.19: - Add pyopenssl, remove git dependency during build time.
    • 09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 05.03.19: - Added apprise python package.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 10.12.18: - Moved to Pipeline Building
    • 16.08.18: - Rebase to alpine 3.8
    • 05.01.18: - Deprecate cpu_core routine lack of scaling
    • 12.12.17: - Rebase to alpine 3.7
    • 21.07.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 30.01.17: - Compile libunrar.so to allow reading of .cbr format files
    • 12.01.17: - Add ghostscript package, allows magazine covers to be created etc
    • 14.10.16: - Add version layer information
    • 03.10.16: - Fix non-persistent settings and make log folder
    • 28.09.16: - Inital Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lazylibrarian /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lazylibrarian
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lazylibrarian
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lazylibrarian:latest

    Versions

    • 07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source.
    • 27.09.22: - Switch to Levenshtein, add cmake as build dep on armhf.
    • 07.05.22: - Rebase to Ubuntu Focal.
    • 22.05.21: - Make the paths clearer to the user, remove optional volume.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.10.19: - Changed gitlab download link.
    • 23.10.19: - Add python module Pillow.
    • 31.07.19: - Add pyopenssl, remove git dependency during build time.
    • 09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 05.03.19: - Added apprise python package.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 10.12.18: - Moved to Pipeline Building
    • 16.08.18: - Rebase to alpine 3.8
    • 05.01.18: - Deprecate cpu_core routine lack of scaling
    • 12.12.17: - Rebase to alpine 3.7
    • 21.07.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 30.01.17: - Compile libunrar.so to allow reading of .cbr format files
    • 12.01.17: - Add ghostscript package, allows magazine covers to be created etc
    • 14.10.16: - Add version layer information
    • 03.10.16: - Fix non-persistent settings and make log folder
    • 28.09.16: - Inital Release
    \ No newline at end of file diff --git a/images/docker-ldap-auth/index.html b/images/docker-ldap-auth/index.html index 2949aa9310..c6bac0fa1b 100644 --- a/images/docker-ldap-auth/index.html +++ b/images/docker-ldap-auth/index.html @@ -1,4 +1,4 @@ - ldap-auth - LinuxServer.io

    linuxserver/ldap-auth

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user’s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config.
    • Here's a sample config: nginx-ldap-auth.conf.
    • Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined).
    • Also unlike the upstream project, this image serves the login page at /ldaplogin (as well as /login) to prevent clashes with reverse proxied apps that may also use /login for their internal auth.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + ldap-auth - LinuxServer.io       

    linuxserver/ldap-auth

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user’s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config.
    • Here's a sample config: nginx-ldap-auth.conf.
    • Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined).
    • Also unlike the upstream project, this image serves the login page at /ldaplogin (as well as /login) to prevent clashes with reverse proxied apps that may also use /login for their internal auth.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       ldap-auth:
    @@ -24,4 +24,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/ldap-auth:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8888 the port for ldap auth daemon
    9000 the port for ldap login page

    Environment Variables (-e)

    Env Function
    TZ=Europe/London Specify a timezone to use EG Europe/London
    FERNETKEY= Optionally define a custom fernet key, has to be base64-encoded 32-byte (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications)
    CERTFILE= Point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon
    KEYFILE= Point this to the private key file, matching the certificate file referred to in CERTFILE

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ldap-auth /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ldap-auth
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ldap-auth
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ldap-auth:latest

    Versions

    • 19.09.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 14.05.21: - Add linuxserver wheel index.
    • 12.02.21: - Clean up cargo/rust cache.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 08.09.20: - Set form action correctly.
    • 30.07.20: - Fix bug related to unset optional CERTFILE and KEYFILE vars.
    • 27.07.20: - Add support for HTTP over SSL (HTTPS).
    • 21.07.20: - Add support for optional user defined fernet key.
    • 02.06.20: - Rebasing to alpine 3.12, serve login page at /ldaplogin as well as /login, to prevent clashes with reverese proxied apps.
    • 17.05.20: - Add support for self-signed CA certs.
    • 20.02.20: - Switch to python3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.07.19: - Fall back to base64 encoding when basic http auth is used.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.09.18: - Update pip
    • 14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params
    • 11.08.18: - Initial release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ldap-auth /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ldap-auth
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ldap-auth
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ldap-auth:latest

    Versions

    • 19.09.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 14.05.21: - Add linuxserver wheel index.
    • 12.02.21: - Clean up cargo/rust cache.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 08.09.20: - Set form action correctly.
    • 30.07.20: - Fix bug related to unset optional CERTFILE and KEYFILE vars.
    • 27.07.20: - Add support for HTTP over SSL (HTTPS).
    • 21.07.20: - Add support for optional user defined fernet key.
    • 02.06.20: - Rebasing to alpine 3.12, serve login page at /ldaplogin as well as /login, to prevent clashes with reverese proxied apps.
    • 17.05.20: - Add support for self-signed CA certs.
    • 20.02.20: - Switch to python3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.07.19: - Fall back to base64 encoding when basic http auth is used.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.09.18: - Update pip
    • 14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params
    • 11.08.18: - Initial release.
    \ No newline at end of file diff --git a/images/docker-letsencrypt/index.html b/images/docker-letsencrypt/index.html index 23170c5228..2e552010c0 100644 --- a/images/docker-letsencrypt/index.html +++ b/images/docker-letsencrypt/index.html @@ -1,4 +1,4 @@ - letsencrypt - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO

    Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub. This is a breaking change and you need to manually update. Apologies for the the disruption.

    Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image

    This repository will be archived and builds for the image will no longer be created at the end of 2020

    linuxserver/letsencrypt

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention.

    letsencrypt

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    docker

    docker create \
    + letsencrypt - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO

    Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub. This is a breaking change and you need to manually update. Apologies for the the disruption.

    Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image

    This repository will be archived and builds for the image will no longer be created at the end of 2020

    linuxserver/letsencrypt

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention.

    letsencrypt

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    docker

    docker create \
       --name=swag \
       --cap-add=NET_ADMIN \
       -e PUID=1000 \
    @@ -61,4 +61,4 @@ docker build \
       --pull \
       -t linuxserver/letsencrypt:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 28.07.20: - Start transition to new name, SWAG.
    • 17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate DHLEVEL param.
    • 01.06.20: - Rebasing to alpine 3.12, change ldap login address to /ldaplogin to avoid clashes (existing users need to manually update).
    • 31.05.20: - Tweak Authelia confs (existing users can delete authelia-server.conf and authelia-location.conf, and restart to update).
    • 23.05.20: - Add support for Authelia.
    • 15.05.20: - Remove php7-pecl-imagick due to upstream issues. Add support for Geoip2 auto db retrieval.
    • 10.05.20: - Added support for fail2ban deny statements.
    • 04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of whois to replace the built-in busybox version. Update jail.local to change default fail2ban ban action to more widely supported iptables-allports.
    • 13.04.20: - Update cloudflare.ini with token info.
    • 11.03.20: - Add php7-sodium.
    • 06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am).
    • 05.03.20: - Use port and proto upstream variables for ldap and default sample confs.
    • 24.02.20: - Remove world/group read permissions in dns-conf.
    • 23.02.20: - Add aliyun dns validation plugin.
    • 28.01.20: - Deprecate tls-sni validation method, remove from docs.
    • 27.01.20: - Add support for cpanel dns validation.
    • 10.01.20: - Add support for domeneshop dns validation.
    • 07.01.20: - Update ciphers from Mozilla ssl-config recommendations.
    • 01.01.20: - Add support for gandi dns validation.
    • 31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 11.12.19: - Fix Google Cloud DNS to use .json file for authentication.
    • 20.11.19: - Fix cryptography version mismatch due to pip issue.
    • 17.11.19: - Add php7-pdo_odbc.
    • 17.11.19: - Add transip dns validation plugin.
    • 27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete /config/nginx/nginx.conf and restart the container).
    • 26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch.
    • 24.10.19: - Add php7-pecl-imagick.
    • 23.10.19: - Update Host header in proxy.conf to fix CSRF issues.
    • 12.10.19: - Add linode dns validation plugin.
    • 23.09.19: - Move GeoIP2 db to /config to make it persistent.
    • 14.08.19: - Add inwx dns validation plugin.
    • 06.08.19: - Add php7-ftp.
    • 04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc.
    • 02.08.19: - Add php7-ldap, remove geoip v1(deprecated).
    • 01.08.19: - Mark https redirect block as default_server (effective only for new installs).
    • 31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist.
    • 30.07.19: - Support main domain via duckdns validation.
    • 29.07.19: - Enable http to https redirect by default (effective only for new installs).
    • 01.07.19: - Patch geoip2 module until upstream is fixed.
    • 30.06.19: - Add geoip2 module.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 19.06.19: - Set resolver to docker dns in ssl.conf.
    • 29.05.19: - Compensate for changes to the reverse-proxy-confs repo.
    • 26.05.19: - Remove botocore/urllib patch.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 12.04.19: - Rebase aarch64 image to 3.9.
    • 25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add TLSv1.3 to ssl.conf.
    • 02.03.19: - Add php intl and posix modules.
    • 27.02.19: - Add gnupg package.
    • 22.02.19: - Rebase to alpine 3.9.
    • 03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update).
    • 09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update).
    • 30.12.18: - Fix bundle key generation.
    • 19.12.18: - Add ipv6 and http/2 support to default site config.
    • 08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented feature of up to 8 minute random delay.
    • 03.12.18: - Fix silly bug resetting the duckdns token.
    • 02.12.18: - Add dns validation support for ovh.
    • 20.11.18: - Externalize reverse proxy confs to separate github repo linuxserver/reverse-proxy-confs, update baseimage packages during build
    • 19.11.18: - Add php opcache package.
    • 12.11.18: - Add support for duckdns wildcard certs via dns validation
    • 31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf)
    • 02.10.18: - Fix fail2ban instructions and logrotate conf
    • 11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto)
    • 04.09.18: - Linting fixes.
    • 30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan)
    • 21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing
    • 08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs
    • 25.07.18: - Add subdomain proxy conf for syncthing
    • 23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf.
    • 31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik)
    • 30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik)
    • 18.05.18: - Add more info on certs and unraid reverse proxy config
    • 11.05.18: - Add php pgsql support
    • 24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps
    • 20.04.18: - Add standardized optional reverse proxy conf files
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3
    • 08.04.18: - Fix renewal hooks
    • 29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight)
    • 29.03.18: - Fix staging for v2 api
    • 13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME.
    • 21.02.18: - Reduce shellcheck directives by renaming secondary variables
    • 20.02.18: - Sanitize variables, increase log verbosity
    • 01.02.18: - Big changes. VALIDATION parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL is deprecated. STAGING parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf
    • 13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting /config/fail2ban/action.d/iptables-common.local and restarting the container after updating the image
    • 11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt)
    • 10.01.18: - Add option for http validation on port 80
    • 05.01.18: - Rebase to alpine 3.7
    • 04.11.17: - Add php7 soap module
    • 31.10.17: - Add php7 exif and xmlreader modules
    • 25.09.17: - Manage fail2ban via s6
    • 24.09.17: - Add memcached service
    • 01.09.17: - --privileged is no longer required as long as --cap-add=NET_ADMIN is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules
    • 31.08.17: - Add php7-phar
    • 14.07.17: - Enable modules dynamically in nginx.conf
    • 06.07.17: - Add support for multiple domains (thanks @oznu)
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf
    • 16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme
    • 05.06.17: - Add php7-bz2
    • 27.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Fix log permissions.
    • 18.04.17: - Add php7-sockets, update fail2ban filter and action defaults
    • 27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite
    • 21.02.17: - Add php7-xml
    • 10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules
    • 13.01.17: - Add php5-ctype and php5-openssl
    • 04.01.17: - Add php5-mysqli and php5-pdo_mysql
    • 22.11.16: - Add gd and mcrypt packages
    • 21.11.16: - Add curl package
    • 07.11.16: - Initial Release
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 28.07.20: - Start transition to new name, SWAG.
    • 17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate DHLEVEL param.
    • 01.06.20: - Rebasing to alpine 3.12, change ldap login address to /ldaplogin to avoid clashes (existing users need to manually update).
    • 31.05.20: - Tweak Authelia confs (existing users can delete authelia-server.conf and authelia-location.conf, and restart to update).
    • 23.05.20: - Add support for Authelia.
    • 15.05.20: - Remove php7-pecl-imagick due to upstream issues. Add support for Geoip2 auto db retrieval.
    • 10.05.20: - Added support for fail2ban deny statements.
    • 04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of whois to replace the built-in busybox version. Update jail.local to change default fail2ban ban action to more widely supported iptables-allports.
    • 13.04.20: - Update cloudflare.ini with token info.
    • 11.03.20: - Add php7-sodium.
    • 06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am).
    • 05.03.20: - Use port and proto upstream variables for ldap and default sample confs.
    • 24.02.20: - Remove world/group read permissions in dns-conf.
    • 23.02.20: - Add aliyun dns validation plugin.
    • 28.01.20: - Deprecate tls-sni validation method, remove from docs.
    • 27.01.20: - Add support for cpanel dns validation.
    • 10.01.20: - Add support for domeneshop dns validation.
    • 07.01.20: - Update ciphers from Mozilla ssl-config recommendations.
    • 01.01.20: - Add support for gandi dns validation.
    • 31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 11.12.19: - Fix Google Cloud DNS to use .json file for authentication.
    • 20.11.19: - Fix cryptography version mismatch due to pip issue.
    • 17.11.19: - Add php7-pdo_odbc.
    • 17.11.19: - Add transip dns validation plugin.
    • 27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete /config/nginx/nginx.conf and restart the container).
    • 26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch.
    • 24.10.19: - Add php7-pecl-imagick.
    • 23.10.19: - Update Host header in proxy.conf to fix CSRF issues.
    • 12.10.19: - Add linode dns validation plugin.
    • 23.09.19: - Move GeoIP2 db to /config to make it persistent.
    • 14.08.19: - Add inwx dns validation plugin.
    • 06.08.19: - Add php7-ftp.
    • 04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc.
    • 02.08.19: - Add php7-ldap, remove geoip v1(deprecated).
    • 01.08.19: - Mark https redirect block as default_server (effective only for new installs).
    • 31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist.
    • 30.07.19: - Support main domain via duckdns validation.
    • 29.07.19: - Enable http to https redirect by default (effective only for new installs).
    • 01.07.19: - Patch geoip2 module until upstream is fixed.
    • 30.06.19: - Add geoip2 module.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 19.06.19: - Set resolver to docker dns in ssl.conf.
    • 29.05.19: - Compensate for changes to the reverse-proxy-confs repo.
    • 26.05.19: - Remove botocore/urllib patch.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 12.04.19: - Rebase aarch64 image to 3.9.
    • 25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add TLSv1.3 to ssl.conf.
    • 02.03.19: - Add php intl and posix modules.
    • 27.02.19: - Add gnupg package.
    • 22.02.19: - Rebase to alpine 3.9.
    • 03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update).
    • 09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update).
    • 30.12.18: - Fix bundle key generation.
    • 19.12.18: - Add ipv6 and http/2 support to default site config.
    • 08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented feature of up to 8 minute random delay.
    • 03.12.18: - Fix silly bug resetting the duckdns token.
    • 02.12.18: - Add dns validation support for ovh.
    • 20.11.18: - Externalize reverse proxy confs to separate github repo linuxserver/reverse-proxy-confs, update baseimage packages during build
    • 19.11.18: - Add php opcache package.
    • 12.11.18: - Add support for duckdns wildcard certs via dns validation
    • 31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf)
    • 02.10.18: - Fix fail2ban instructions and logrotate conf
    • 11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto)
    • 04.09.18: - Linting fixes.
    • 30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan)
    • 21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing
    • 08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs
    • 25.07.18: - Add subdomain proxy conf for syncthing
    • 23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf.
    • 31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik)
    • 30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik)
    • 18.05.18: - Add more info on certs and unraid reverse proxy config
    • 11.05.18: - Add php pgsql support
    • 24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps
    • 20.04.18: - Add standardized optional reverse proxy conf files
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3
    • 08.04.18: - Fix renewal hooks
    • 29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight)
    • 29.03.18: - Fix staging for v2 api
    • 13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME.
    • 21.02.18: - Reduce shellcheck directives by renaming secondary variables
    • 20.02.18: - Sanitize variables, increase log verbosity
    • 01.02.18: - Big changes. VALIDATION parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL is deprecated. STAGING parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf
    • 13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting /config/fail2ban/action.d/iptables-common.local and restarting the container after updating the image
    • 11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt)
    • 10.01.18: - Add option for http validation on port 80
    • 05.01.18: - Rebase to alpine 3.7
    • 04.11.17: - Add php7 soap module
    • 31.10.17: - Add php7 exif and xmlreader modules
    • 25.09.17: - Manage fail2ban via s6
    • 24.09.17: - Add memcached service
    • 01.09.17: - --privileged is no longer required as long as --cap-add=NET_ADMIN is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules
    • 31.08.17: - Add php7-phar
    • 14.07.17: - Enable modules dynamically in nginx.conf
    • 06.07.17: - Add support for multiple domains (thanks @oznu)
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf
    • 16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme
    • 05.06.17: - Add php7-bz2
    • 27.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Fix log permissions.
    • 18.04.17: - Add php7-sockets, update fail2ban filter and action defaults
    • 27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite
    • 21.02.17: - Add php7-xml
    • 10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules
    • 13.01.17: - Add php5-ctype and php5-openssl
    • 04.01.17: - Add php5-mysqli and php5-pdo_mysql
    • 22.11.16: - Add gd and mcrypt packages
    • 21.11.16: - Add curl package
    • 07.11.16: - Initial Release
    \ No newline at end of file diff --git a/images/docker-libreoffice/index.html b/images/docker-libreoffice/index.html index ef3df9aa53..a65bc37083 100644 --- a/images/docker-libreoffice/index.html +++ b/images/docker-libreoffice/index.html @@ -1,4 +1,4 @@ - libreoffice - LinuxServer.io

    linuxserver/libreoffice

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + libreoffice - LinuxServer.io       

    linuxserver/libreoffice

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       libreoffice:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 LibreOffice desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings and documents

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it libreoffice /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libreoffice
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' libreoffice
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/libreoffice:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 05.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it libreoffice /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libreoffice
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' libreoffice
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/libreoffice:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 05.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-libresonic/index.html b/images/docker-libresonic/index.html index d09905a1ac..3afb4629be 100644 --- a/images/docker-libresonic/index.html +++ b/images/docker-libresonic/index.html @@ -1,4 +1,4 @@ - libresonic - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic

    linuxserver/libresonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + libresonic - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic

    linuxserver/libresonic

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=libresonic \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -35,4 +35,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4040 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups.

    Volume Mappings (-v)

    Volume Function
    /config Configuration file location.
    /music Location of music.
    /playlists Location for playlists to be saved to.
    /podcasts Location of podcasts.
    /media Location of other media.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it libresonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libresonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' libresonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/libresonic

    Versions

    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.01.19: - Pull war from github, adding pipeline multi arch builds.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 12.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts).
    • 08.02.17: - Rebase to alpine 3.5.
    • 04.12.16: - Update jetty runner version.
    • 29.11.16: - Switch to building from release tags following v6.1 stable release.
    • 17.11.16: - Initial Release.
    \ No newline at end of file +

    Application Setup

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it libresonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libresonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' libresonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/libresonic

    Versions

    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.01.19: - Pull war from github, adding pipeline multi arch builds.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 12.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts).
    • 08.02.17: - Rebase to alpine 3.5.
    • 04.12.16: - Update jetty runner version.
    • 29.11.16: - Switch to building from release tags following v6.1 stable release.
    • 17.11.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-librespeed/index.html b/images/docker-librespeed/index.html index 41ddd75fa2..ac4fa4bec8 100644 --- a/images/docker-librespeed/index.html +++ b/images/docker-librespeed/index.html @@ -1,4 +1,4 @@ - librespeed - LinuxServer.io

    linuxserver/librespeed

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the speedtest webui at http://SERVERIP. The results database can be accessed at http://SERVERIP/results/stats.php with the password set.
    The default template used is based on example-singleServer-full.html. However, all templates are provided for reference at /config/www/. Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default.

    You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults.

    If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link
    https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database

    To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + librespeed - LinuxServer.io       

    linuxserver/librespeed

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the speedtest webui at http://SERVERIP. The results database can be accessed at http://SERVERIP/results/stats.php with the password set.
    The default template used is based on example-singleServer-full.html. However, all templates are provided for reference at /config/www/. Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default.

    You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults.

    If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link
    https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database

    To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       librespeed:
    @@ -41,4 +41,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    PASSWORD=PASSWORD Set the password for the results database.
    CUSTOM_RESULTS=false (optional) set to true to enable custom results page in /config/www/results/index.php.
    DB_TYPE=sqlite Defaults to sqlite, can also be set to mysql or postgresql.
    DB_NAME=DB_NAME Database name. Required for mysql and pgsql.
    DB_HOSTNAME=DB_HOSTNAME Database address. Required for mysql and pgsql.
    DB_USERNAME=DB_USERNAME Database username. Required for mysql and pgsql.
    DB_PASSWORD=DB_PASSWORD Database password. Required for mysql and pgsql.
    DB_PORT=DB_PORT Database port. Required for mysql.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it librespeed /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f librespeed
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' librespeed
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/librespeed:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 01.03.21: - Fix up database settings. Make sure index.html is recreated.
    • 28.02.21: - Added php7-ctype.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log.
    • 09.01.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it librespeed /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f librespeed
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' librespeed
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/librespeed:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 01.03.21: - Fix up database settings. Make sure index.html is recreated.
    • 28.02.21: - Added php7-ctype.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log.
    • 09.01.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-lidarr/index.html b/images/docker-lidarr/index.html index ddde6402f1..784c459dd4 100644 --- a/images/docker-lidarr/index.html +++ b/images/docker-lidarr/index.html @@ -1,4 +1,4 @@ - lidarr - LinuxServer.io

    linuxserver/lidarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Lidarr releases.
    develop Develop Lidarr Releases.
    nightly Nightly Lidarr Releases.

    Application Setup

    Access the webui at <your-ip>:8686, for more information check out Lidarr.

    Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on seperate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music.

    Another item to keep in mind, is that within lidarr itself, you should then map your download client folder to your lidarr folder: Settings -> Download Client -> advanced -> remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to seperate your downloaded data types.

    Media folders

    We have set /music and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + lidarr - LinuxServer.io       

    linuxserver/lidarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Lidarr releases.
    develop Develop Lidarr Releases.
    nightly Nightly Lidarr Releases.

    Application Setup

    Access the webui at <your-ip>:8686, for more information check out Lidarr.

    Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on seperate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music.

    Another item to keep in mind, is that within lidarr itself, you should then map your download client folder to your lidarr folder: Settings -> Download Client -> advanced -> remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to seperate your downloaded data types.

    Media folders

    We have set /music and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       lidarr:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8686 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files for Lidarr.
    /music Music files (See note in Application setup).
    /downloads Path to your download folder for music (See note in Application setup).

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lidarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lidarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lidarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lidarr:latest

    Versions

    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 06.05.22: - Rebase master branch to Focal.
    • 06.05.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch.
    • 30.12.21: - Add nightly-alpine branch.
    • 01.08.21: - Add libchromaprint-tools.
    • 11.07.21: - Make the paths clearer to the user.
    • 18.04.21: - Switch latest tag to net core.
    • 25.01.21: - Publish develop tag.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 18.04.20: - Removed /downloads and /music volumes from Dockerfiles.
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 22.04.18: - Switch to beta builds.
    • 17.03.18: - Add ENV XDG_CONFIG_HOME="/config/xdg" to Dockerfile for signalr fix.
    • 27.02.18: - Use json to query for new version.
    • 23.02.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lidarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lidarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lidarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lidarr:latest

    Versions

    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 06.05.22: - Rebase master branch to Focal.
    • 06.05.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch.
    • 30.12.21: - Add nightly-alpine branch.
    • 01.08.21: - Add libchromaprint-tools.
    • 11.07.21: - Make the paths clearer to the user.
    • 18.04.21: - Switch latest tag to net core.
    • 25.01.21: - Publish develop tag.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 18.04.20: - Removed /downloads and /music volumes from Dockerfiles.
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 22.04.18: - Switch to beta builds.
    • 17.03.18: - Add ENV XDG_CONFIG_HOME="/config/xdg" to Dockerfile for signalr fix.
    • 27.02.18: - Use json to query for new version.
    • 23.02.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-limnoria/index.html b/images/docker-limnoria/index.html index bd472f2875..0743753903 100644 --- a/images/docker-limnoria/index.html +++ b/images/docker-limnoria/index.html @@ -1,4 +1,4 @@ - limnoria - LinuxServer.io

    linuxserver/limnoria

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    New Configuration

    If you do not have an existing config you will need to start the container and then run the following wizard command:

    docker exec -it -w /config -u abc limnoria limnoria-wizard

    Existing Configuration

    If you have an existing config, adjust the directory settings in your conf file as follows:

    supybot.directories.backup: /config/backup
    + limnoria - LinuxServer.io       

    linuxserver/limnoria

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    New Configuration

    If you do not have an existing config you will need to start the container and then run the following wizard command:

    docker exec -it -w /config -u abc limnoria limnoria-wizard

    Existing Configuration

    If you have an existing config, adjust the directory settings in your conf file as follows:

    supybot.directories.backup: /config/backup
     supybot.directories.conf: /config/conf
     supybot.directories.data: /config/data
     supybot.directories.data.tmp: /config/data/tmp
    @@ -32,4 +32,4 @@ supybot.directories.plugins: /config/plugins
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Port for Limnoria's web interface.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where Limnoria config is stored.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it limnoria /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f limnoria
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' limnoria
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/limnoria:latest

    Versions

    • 22.12.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 25.05.21: - Install plugin requirements on container init.
    • 17.05.21: - Add linuxserver wheel index.
    • 13.02.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.01.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it limnoria /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f limnoria
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' limnoria
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/limnoria:latest

    Versions

    • 22.12.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 25.05.21: - Install plugin requirements on container init.
    • 17.05.21: - Add linuxserver wheel index.
    • 13.02.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.01.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-lychee/index.html b/images/docker-lychee/index.html index 07ec7979f6..06c78dc8ce 100644 --- a/images/docker-lychee/index.html +++ b/images/docker-lychee/index.html @@ -1,4 +1,4 @@ - lychee - LinuxServer.io

    linuxserver/lychee

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely."

    UPGRADE WARNING

    Please note that the v4 upgrade process resets ALL password-protected albums. Any albums that were made public with a password will need to be re-secured.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image will not work with a prefilled /pictures mount, lychee wants total control over this folder

    Setup mysql/mariadb and account via the webui, accessible at http://SERVERIP:PORT More info at lychee.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    version: "3"
    + lychee - LinuxServer.io       

    linuxserver/lychee

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely."

    UPGRADE WARNING

    Please note that the v4 upgrade process resets ALL password-protected albums. Any albums that were made public with a password will need to be re-secured.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image will not work with a prefilled /pictures mount, lychee wants total control over this folder

    Setup mysql/mariadb and account via the webui, accessible at http://SERVERIP:PORT More info at lychee.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    version: "3"
     services:
       mariadb:
         image: lscr.io/linuxserver/mariadb:latest
    @@ -51,4 +51,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    DB_HOST=mariadb for specifying the database host
    DB_USERNAME=lychee for specifying the database user
    DB_PASSWORD=dbpassword for specifying the database password
    DB_DATABASE=lychee for specifying the database to be used

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /pictures Where lychee will store uploaded data.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lychee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lychee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lychee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lychee:latest

    Versions

    • 04.12.21: - Rebase to alpine 3.15 with php8.
    • 13.05.21: - Make readme clearer.
    • 18.04.21: - Add php-intl for v4.3.
    • 31.01.21: - Add jpegoptim.
    • 15.01.21: - Rebase to alpine 3.13, add php7-ctype.
    • 10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.10.19: - Increase fastcgi timeouts (existing users need to manually update).
    • 19.09.19: - Update project website url.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 05.05.19: - Rebase to alpine 3.9, use new armv7 image format.
    • 21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme.
    • 14.01.19: - Adding pipeline logic and multi arch..
    • 04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 12.02.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it lychee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lychee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lychee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/lychee:latest

    Versions

    • 04.12.21: - Rebase to alpine 3.15 with php8.
    • 13.05.21: - Make readme clearer.
    • 18.04.21: - Add php-intl for v4.3.
    • 31.01.21: - Add jpegoptim.
    • 15.01.21: - Rebase to alpine 3.13, add php7-ctype.
    • 10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.10.19: - Increase fastcgi timeouts (existing users need to manually update).
    • 19.09.19: - Update project website url.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 05.05.19: - Rebase to alpine 3.9, use new armv7 image format.
    • 21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme.
    • 14.01.19: - Adding pipeline logic and multi arch..
    • 04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 12.02.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-mariadb/index.html b/images/docker-mariadb/index.html index 8ee46c725c..45b11bc82c 100644 --- a/images/docker-mariadb/index.html +++ b/images/docker-mariadb/index.html @@ -1,4 +1,4 @@ - mariadb - LinuxServer.io

    linuxserver/mariadb

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mariadb is one of the most popular database servers. Made by the original developers of MySQL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    If you didn't set a password during installation, (see logs for warning) use mysqladmin -u root password <PASSWORD> to set one at the docker prompt...

    NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password.

    NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose.

    Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable.

    Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl

    Loading passwords and users from files

    The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file:

    /config/env
    + mariadb - LinuxServer.io       

    linuxserver/mariadb

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mariadb is one of the most popular database servers. Made by the original developers of MySQL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    If you didn't set a password during installation, (see logs for warning) use mysqladmin -u root password <PASSWORD> to set one at the docker prompt...

    NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password.

    NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose.

    Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable.

    Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl

    Loading passwords and users from files

    The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file:

    /config/env
     

    Using the following format:

    MYSQL_ROOT_PASSWORD="ROOT_ACCESS_PASSWORD"
     MYSQL_DATABASE="USER_DB_NAME"
     MYSQL_USER="MYSQL_USER"
    @@ -42,4 +42,4 @@ REMOTE_SQL="http://URL1/your.sql,https://URL2/your.sql"
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3306 Mariadb listens on this port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD Set this to root password for installation (minimum 4 characters & non-alphanumeric passwords must be properly escaped).
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    MYSQL_DATABASE=USER_DB_NAME Specify the name of a database to be created on image startup.
    MYSQL_USER=MYSQL_USER This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here).
    MYSQL_PASSWORD=DATABASE_PASSWORD Set this to the password you want to use for you MYSQL_USER (minimum 4 characters & non-alphanumeric passwords must be properly escaped).
    REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql Set this to ingest sql files from an http/https endpoint (comma seperated array).

    Volume Mappings (-v)

    Volume Function
    /config Contains the db itself and all assorted settings.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mariadb /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mariadb
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mariadb
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mariadb:latest

    Versions

    • 11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users.
    • 06.07.21: - Rebase master to alpine.
    • 03.07.21: - Rebase to 3.14.
    • 08.02.21: - Fix new installs.
    • 08.02.21: - Rebase to alpine. Add mariadb-backup.
    • 08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future.
    • 27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 07.03.19: - Add ability to setup a database and default user on first spinup.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository.
    • 09.12.17: - Fix continuation lines.
    • 12.09.17: - Gracefully shut down mariadb.
    • 27.10.16: - Implement linting suggestions on database init script.
    • 11.10.16: - Rebase to ubuntu xenial, add version labelling.
    • 09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile.
    • 26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart.
    • 23.12.15: - Remove autoupdating, between some version updates the container breaks.
    • 12.08.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mariadb /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mariadb
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mariadb
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mariadb:latest

    Versions

    • 11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users.
    • 06.07.21: - Rebase master to alpine.
    • 03.07.21: - Rebase to 3.14.
    • 08.02.21: - Fix new installs.
    • 08.02.21: - Rebase to alpine. Add mariadb-backup.
    • 08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future.
    • 27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 07.03.19: - Add ability to setup a database and default user on first spinup.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository.
    • 09.12.17: - Fix continuation lines.
    • 12.09.17: - Gracefully shut down mariadb.
    • 27.10.16: - Implement linting suggestions on database init script.
    • 11.10.16: - Rebase to ubuntu xenial, add version labelling.
    • 09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile.
    • 26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart.
    • 23.12.15: - Remove autoupdating, between some version updates the container breaks.
    • 12.08.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-mastodon/index.html b/images/docker-mastodon/index.html index bbf4588457..e512755ed1 100644 --- a/images/docker-mastodon/index.html +++ b/images/docker-mastodon/index.html @@ -1,4 +1,4 @@ - mastodon - LinuxServer.io

    linuxserver/mastodon

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    develop Pre-releases only.

    Application Setup

    To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret once for each.

    To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key

    To use tootctl you can run something like docker exec -it -w /app/www mastodon bin/tootctl <command>

    This container requires separate postgres and redis instances to run.

    We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project.

    For more information check out the mastodon documentation.

    Running separate sidekiq instances

    It is currently only supported to run a single queue per container instance or all queues in a single container instance.

    All containers must share the same `/config`` mount and be on a common docker network.

    Strict reverse proxies

    This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + mastodon - LinuxServer.io       

    linuxserver/mastodon

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    develop Pre-releases only.

    Application Setup

    To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret once for each.

    To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key

    To use tootctl you can run something like docker exec -it -w /app/www mastodon bin/tootctl <command>

    This container requires separate postgres and redis instances to run.

    We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project.

    For more information check out the mastodon documentation.

    Running separate sidekiq instances

    It is currently only supported to run a single queue per container instance or all queues in a single container instance.

    All containers must share the same `/config`` mount and be on a common docker network.

    Strict reverse proxies

    This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       mastodon:
    @@ -93,4 +93,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Port for web frontend
    443 Port for web frontend

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    LOCAL_DOMAIN=example.com This is the unique identifier of your server in the network. It cannot be safely changed later.
    REDIS_HOST=redis Redis server hostname
    REDIS_PORT=6379 Redis port
    DB_HOST=db Postgres database hostname
    DB_USER=mastodon Postgres username
    DB_NAME=mastodon Postgres db name
    DB_PASS=mastodon Postgres password
    DB_PORT=5432 Portgres port
    ES_ENABLED=false Enable or disable Elasticsearch (requires a separate ES instance)
    SECRET_KEY_BASE= Browser session secret. Changing it will break all active browser sessions.
    OTP_SECRET= MFA secret. Changing it will break two-factor authentication.
    VAPID_PRIVATE_KEY= Push notification private key. Changing it will break push notifications.
    VAPID_PUBLIC_KEY= Push notification public key. Changing it will break push notifications.
    SMTP_SERVER=mail.example.com SMTP server for email notifications
    SMTP_PORT=25 SMTP server port
    SMTP_LOGIN= SMTP username
    SMTP_PASSWORD= SMTP password
    SMTP_FROM_ADDRESS=notifications@example.com From address for emails send from Mastodon
    S3_ENABLED=false Enable or disable S3 storage of uploaded files
    WEB_DOMAIN=mastodon.example.com This can be set if you want your server identifier to be different to the subdomain hosting Mastodon. See https://docs.joinmastodon.org/admin/config/#basic
    ES_HOST=es Elasticsearch server hostname
    ES_PORT=9200 Elasticsearch port
    ES_USER=elastic Elasticsearch username
    ES_PASS=elastic Elasticsearch password
    S3_BUCKET= S3 bucket hostname
    AWS_ACCESS_KEY_ID= S3 bucket access key ID
    AWS_SECRET_ACCESS_KEY= S3 bucket secret access key
    S3_ALIAS_HOST= Alternate hostname for object fetching if you are front the S3 connections.
    SIDEKIQ_ONLY=false Only run the sidekiq service in this container instance. For large scale instances that need better queue handling.
    SIDEKIQ_QUEUE= The name of the sidekiq queue to run in this container. See notes.
    SIDEKIQ_DEFAULT=false Set to true on the main container if you're running additional sidekiq instances. It will run the default queue.
    SIDEKIQ_THREADS=5 The number of threads for sidekiq to use. See notes.
    DB_POOL=5 The size of the DB connection pool, must be at least the same as SIDEKIQ_THREADS. See notes.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mastodon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mastodon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mastodon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mastodon:latest

    Versions

    • 09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration).
    • 19.12.22: - Support separate sidekiq queue instances.
    • 05.11.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mastodon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mastodon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mastodon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mastodon:latest

    Versions

    • 09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration).
    • 19.12.22: - Support separate sidekiq queue instances.
    • 05.11.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-medusa/index.html b/images/docker-medusa/index.html index 5117839215..f000a96ab7 100644 --- a/images/docker-medusa/index.html +++ b/images/docker-medusa/index.html @@ -1,4 +1,4 @@ - medusa - LinuxServer.io

    linuxserver/medusa

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Web interface is at <your ip>:8081.

    Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + medusa - LinuxServer.io       

    linuxserver/medusa

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Web interface is at <your ip>:8081.

    Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       medusa:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8081 The port for the Medusa webui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use e.g. Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Medusa config
    /downloads Download location
    /tv TV Shows location

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it medusa /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f medusa
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' medusa
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/medusa:latest

    Versions

    • 12.09.22: - Install ffmpeg for postprocessing.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 28.02.22: - Install python3 requirements for app.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Switch to python3.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Adding multi arch and pipeline logic
    • 16.08.18: - Rebase to alpine 3.8
    • 08.12.17: - Rebase to alpine 3.7
    • 29.11.17: - Add py-gdbm for subtitles support
    • 26.10.17: - Mediainfo moved from testing to community repo
    • 10.10.17: - Use repo version of mediainfo to shorten build time
    • 05.08.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 02.01.17: - Initial Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it medusa /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f medusa
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' medusa
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/medusa:latest

    Versions

    • 12.09.22: - Install ffmpeg for postprocessing.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 28.02.22: - Install python3 requirements for app.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Switch to python3.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Adding multi arch and pipeline logic
    • 16.08.18: - Rebase to alpine 3.8
    • 08.12.17: - Rebase to alpine 3.7
    • 29.11.17: - Add py-gdbm for subtitles support
    • 26.10.17: - Mediainfo moved from testing to community repo
    • 10.10.17: - Use repo version of mediainfo to shorten build time
    • 05.08.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 02.01.17: - Initial Release
    \ No newline at end of file diff --git a/images/docker-minetest/index.html b/images/docker-minetest/index.html index 354cf17055..08ac262cb7 100644 --- a/images/docker-minetest/index.html +++ b/images/docker-minetest/index.html @@ -1,4 +1,4 @@ - minetest - LinuxServer.io

    linuxserver/minetest

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    You can find the world maps, mods folder and config files in /config/.minetest.

    If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp

    Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:

    https://hub.docker.com/r/linuxserver/minetest/tags

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + minetest - LinuxServer.io       

    linuxserver/minetest

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    You can find the world maps, mods folder and config files in /config/.minetest.

    If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp

    Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:

    https://hub.docker.com/r/linuxserver/minetest/tags

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       minetest:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    30000/udp Port Minetest listens on.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    CLI_ARGS="--gameid minetest --port 30000" Optionally specify any CLI variables you want to launch the app with

    Volume Mappings (-v)

    Volume Function
    /config/.minetest Where minetest stores config files and maps etc.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it minetest /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minetest
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' minetest
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minetest:latest

    Versions

    • 06.08.22: - Update irrlicht deps.
    • 02.05.22: - Allow specifying the advertised port.
    • 17.03.22: - Install forked irrlicht, add zstd.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.07.19: - Bugfix to support multiple CLI variables.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 03.06.19: - Adding custom cli vars to options.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 30.11.17: - Use cpu core counting routine to speed up build time.
    • 26.05.17: - Rebase to alpine 3.6.
    • 14.02.17: - Rebase to alpine 3.5.
    • 25.11.16: - Rebase to alpine linux, move to main repo.
    • 27.02.16: - Bump to latest version.
    • 19.02.16: - Change port to UDP, thanks to slashopt for pointing this out.
    • 15.02.16: - Make minetest app a service.
    • 01.02.16: - Add lua-socket dependency.
    • 06.11.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it minetest /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minetest
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' minetest
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minetest:latest

    Versions

    • 06.08.22: - Update irrlicht deps.
    • 02.05.22: - Allow specifying the advertised port.
    • 17.03.22: - Install forked irrlicht, add zstd.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.07.19: - Bugfix to support multiple CLI variables.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 03.06.19: - Adding custom cli vars to options.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 30.11.17: - Use cpu core counting routine to speed up build time.
    • 26.05.17: - Rebase to alpine 3.6.
    • 14.02.17: - Rebase to alpine 3.5.
    • 25.11.16: - Rebase to alpine linux, move to main repo.
    • 27.02.16: - Bump to latest version.
    • 19.02.16: - Change port to UDP, thanks to slashopt for pointing this out.
    • 15.02.16: - Make minetest app a service.
    • 01.02.16: - Add lua-socket dependency.
    • 06.11.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-minisatip/index.html b/images/docker-minisatip/index.html index e72d92af6b..6735aa52b3 100644 --- a/images/docker-minisatip/index.html +++ b/images/docker-minisatip/index.html @@ -1,4 +1,4 @@ - minisatip - LinuxServer.io

    linuxserver/minisatip

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Best used in conjunction with tvheadend

    There is no setup per se, other than adding your cards for passthrough.

    You can then use your cards as DVB inputs in apps such as tvheadend.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + minisatip - LinuxServer.io       

    linuxserver/minisatip

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Best used in conjunction with tvheadend

    There is no setup per se, other than adding your cards for passthrough.

    You can then use your cards as DVB inputs in apps such as tvheadend.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       minisatip:
    @@ -34,4 +34,4 @@
     

    Additional runtime parameters

    In some cases it might be necessary to start minisatip with additional parameters, for example to configure a unicable LNB. Add the parameters you need and restart the container. Be sure to have the right parameters set as adding the wrong once might lead to the container not starting correctly. For a list of minisatip parameters visit Minisatip page.

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8875 Status Page WebUI
    554 RTSP Port
    1900/udp App Discovery

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    RUN_OPTS= Specify specific run params for minisatip

    Volume Mappings (-v)

    Volume Function
    /config Configuration files and minisatip data

    Device Mappings (--device)

    Parameter Function
    /dev/dvb For passing through Tv-cards

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it minisatip /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minisatip
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' minisatip
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minisatip:latest

    Versions

    • 12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 20.02.19: - Fix run options.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to Alpine 3.8.
    • 13.12.17: - Rebase to Alpine 3.7.
    • 28.05.17: - Rebase to Alpine 3.6.
    • 08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps.
    • 14.10.16: - Add version layer information.
    • 18.09.16: - Add support for Common Interface.
    • 11.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it minisatip /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minisatip
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' minisatip
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minisatip:latest

    Versions

    • 12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 20.02.19: - Fix run options.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to Alpine 3.8.
    • 13.12.17: - Rebase to Alpine 3.7.
    • 28.05.17: - Rebase to Alpine 3.6.
    • 08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps.
    • 14.10.16: - Add version layer information.
    • 18.09.16: - Add support for Common Interface.
    • 11.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-mstream/index.html b/images/docker-mstream/index.html index 41d4785a1a..0d818bf28c 100644 --- a/images/docker-mstream/index.html +++ b/images/docker-mstream/index.html @@ -1,4 +1,4 @@ - mstream - LinuxServer.io

    linuxserver/mstream

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:3000

    Settings are adjusted through the web ui or via editing of config.json. For more information check out Mstream.

    IMPORTANT NOTICE:

    mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json. Therefore, the environment variables USER, PASSWORD and USE_JSON are deprecated.

    v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + mstream - LinuxServer.io       

    linuxserver/mstream

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://<your-ip>:3000

    Settings are adjusted through the web ui or via editing of config.json. For more information check out Mstream.

    IMPORTANT NOTICE:

    mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json. Therefore, the environment variables USER, PASSWORD and USE_JSON are deprecated.

    v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       mstream:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 The port for the mStream webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use e.g. Europe/London

    Volume Mappings (-v)

    Volume Function
    /config mStream config
    /music Music location

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mstream /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mstream
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mstream
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mstream:latest

    Versions

    • 05.04.22: - Move sync folder to /config.
    • 02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download.
    • 17.05.21: - Deprecating the env vars USER, PASSWORD and USE_JSON as mStream v5 requires the use of config.json.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Inital Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mstream /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mstream
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mstream
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mstream:latest

    Versions

    • 05.04.22: - Move sync folder to /config.
    • 02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download.
    • 17.05.21: - Deprecating the env vars USER, PASSWORD and USE_JSON as mStream v5 requires the use of config.json.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Inital Release
    \ No newline at end of file diff --git a/images/docker-musicbrainz/index.html b/images/docker-musicbrainz/index.html index 9d5ac5aa85..c049ad32e6 100644 --- a/images/docker-musicbrainz/index.html +++ b/images/docker-musicbrainz/index.html @@ -1,4 +1,4 @@ - musicbrainz - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/musicbrainz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.

    musicbrainz

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    Compatible with docker-compose v2 schemas.

    ---
    + musicbrainz - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/musicbrainz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.

    musicbrainz

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       musicbrainz:
    @@ -44,4 +44,4 @@ docker build \
       --pull \
       -t lscr.io/linuxserver/musicbrainz:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 23.02.21: - Deprecate image as no one stepped up to take over as maintainer.
    • 03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current.
    • 17.05.19: - Update DBDefs.pm to schema 25 database.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools.
    • 19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9
    • 22.08.18: - Bump server version 2018-08-14.
    • 30.06.18: - Bump server version 2018-06-30.
    • 01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm.
    • 14.05.18: - Bump server version 2018-05-09.
    • 26.04.18: - Bump server version 2018-04-23.
    • 09.02.18: - Bump server version 2018-02-09.
    • 24.01.18: - Bump server version 2018-01-24.
    • 10.01.18: - Bump server version 2018-01-10.
    • 31.11.17: - Bump server version 2017-12-21.
    • 30.11.17: - Add NPROC variable to allow number of processes to be set.
    • 30.11.17: - Fix linting recommendations.
    • 30.11.17: - Remove socket on startup if exists (thanks wtf911) re.
    • 24.11.17: - Remove catalyst side bar on new installs.
    • 31.10.17: - Bump server version 2017-10-31.
    • 20.09.17: - Bump server version 2017-09-18.
    • 06.09.17: - Bump server version 2017-09-04.
    • 19.07.17: - Bump server version 2017-07-17.
    • 21.06.17: - Bump server version 2017-06-19.
    • 26.05.17: - Fix later build of postgres using /run instead of /var/run.
    • 26.05.17: - Rebase to alpine 3.6.
    • 15.05.17: - Schema 24 update, recommend full rebuild with new config.
    • 15.04.17: - Bump server version 2017-04-10.
    • 04.04.17: - Bump server version 2017-03-27.
    • 15.03.17: - Bump server version 2017-03-13.
    • 04.03.17: - Bump server version and use nginx to serve web pages.
    • 06.02.17: - Rebase to alpine 3.5.
    • 16.12.16: - Rebase to alpine linux, entailing almost complete rewrite.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README, move to main repository.
    • 20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan.
    • 03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly.
    • 21.03.16: - Bump to latest server release.
    • 16.03.16: - Bump to latest server release.
    • 26.02.16: - Bump to latest server release.
    • 08.02.16: - Switch to PPA version for redis.
    • 03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads.
    • 15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master.
    • 10.12.15: - Initial release date.
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 23.02.21: - Deprecate image as no one stepped up to take over as maintainer.
    • 03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current.
    • 17.05.19: - Update DBDefs.pm to schema 25 database.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools.
    • 19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9
    • 22.08.18: - Bump server version 2018-08-14.
    • 30.06.18: - Bump server version 2018-06-30.
    • 01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm.
    • 14.05.18: - Bump server version 2018-05-09.
    • 26.04.18: - Bump server version 2018-04-23.
    • 09.02.18: - Bump server version 2018-02-09.
    • 24.01.18: - Bump server version 2018-01-24.
    • 10.01.18: - Bump server version 2018-01-10.
    • 31.11.17: - Bump server version 2017-12-21.
    • 30.11.17: - Add NPROC variable to allow number of processes to be set.
    • 30.11.17: - Fix linting recommendations.
    • 30.11.17: - Remove socket on startup if exists (thanks wtf911) re.
    • 24.11.17: - Remove catalyst side bar on new installs.
    • 31.10.17: - Bump server version 2017-10-31.
    • 20.09.17: - Bump server version 2017-09-18.
    • 06.09.17: - Bump server version 2017-09-04.
    • 19.07.17: - Bump server version 2017-07-17.
    • 21.06.17: - Bump server version 2017-06-19.
    • 26.05.17: - Fix later build of postgres using /run instead of /var/run.
    • 26.05.17: - Rebase to alpine 3.6.
    • 15.05.17: - Schema 24 update, recommend full rebuild with new config.
    • 15.04.17: - Bump server version 2017-04-10.
    • 04.04.17: - Bump server version 2017-03-27.
    • 15.03.17: - Bump server version 2017-03-13.
    • 04.03.17: - Bump server version and use nginx to serve web pages.
    • 06.02.17: - Rebase to alpine 3.5.
    • 16.12.16: - Rebase to alpine linux, entailing almost complete rewrite.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README, move to main repository.
    • 20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan.
    • 03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly.
    • 21.03.16: - Bump to latest server release.
    • 16.03.16: - Bump to latest server release.
    • 26.02.16: - Bump to latest server release.
    • 08.02.16: - Switch to PPA version for redis.
    • 03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads.
    • 15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master.
    • 10.12.15: - Initial release date.
    \ No newline at end of file diff --git a/images/docker-muximux/index.html b/images/docker-muximux/index.html index ac8e1a0000..b27fa420f6 100644 --- a/images/docker-muximux/index.html +++ b/images/docker-muximux/index.html @@ -1,4 +1,4 @@ - muximux - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/muximux

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Find the web interface at <your-ip>:80 , set apps you wish to use with muximux via the webui. More info:- Muximux

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + muximux - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/muximux

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Find the web interface at <your-ip>:80 , set apps you wish to use with muximux via the webui. More info:- Muximux

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       muximux:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where muximux should store its files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it muximux /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f muximux
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' muximux
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/muximux:latest

    Versions

    • 21.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 13.09.18: - Rebase to alpine 3.8.
    • 09.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 12.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 09.09.16: - Add badges to README.
    • 22.02.16: - Initial release date.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it muximux /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f muximux
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' muximux
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/muximux:latest

    Versions

    • 21.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 13.09.18: - Rebase to alpine 3.8.
    • 09.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 12.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 09.09.16: - Add badges to README.
    • 22.02.16: - Initial release date.
    \ No newline at end of file diff --git a/images/docker-mylar/index.html b/images/docker-mylar/index.html index 0c8318c3be..1143961da2 100644 --- a/images/docker-mylar/index.html +++ b/images/docker-mylar/index.html @@ -1,4 +1,4 @@ - mylar - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/mylar

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + mylar - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/mylar

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       mylar:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8090 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation

    Volume Mappings (-v)

    Volume Function
    /config Where mylar should store config files.
    /comics Map to your comics folder.
    /downloads Map to your downloads folder.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    THIS IMAGE IS DEPRECATED. Please migrate to Mylar3.

    The web ui for settings etc, is on <your-ip>:8090 For more detailed setup refer Mylar.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mylar /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mylar
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mylar

    Versions

    • 21.12.20: - Deprecated. Please migrate to Mylar3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 06.07.18: - Add html5lib python package.
    • 14.06.18: - Add requests python package.
    • 12.12.17: - Rebase to alpine 3.7.
    • 21.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 19.02.17: - Use quiet option for cleaner console log, app logs to file anyways.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 26.01.16: - Initial release.
    \ No newline at end of file +

    Application Setup

    THIS IMAGE IS DEPRECATED. Please migrate to Mylar3.

    The web ui for settings etc, is on <your-ip>:8090 For more detailed setup refer Mylar.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mylar /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mylar
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mylar

    Versions

    • 21.12.20: - Deprecated. Please migrate to Mylar3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 06.07.18: - Add html5lib python package.
    • 14.06.18: - Add requests python package.
    • 12.12.17: - Rebase to alpine 3.7.
    • 21.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 19.02.17: - Use quiet option for cleaner console log, app logs to file anyways.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 26.01.16: - Initial release.
    \ No newline at end of file diff --git a/images/docker-mylar3/index.html b/images/docker-mylar3/index.html index 730cd0efaa..a3728e0107 100644 --- a/images/docker-mylar3/index.html +++ b/images/docker-mylar3/index.html @@ -1,4 +1,4 @@ - mylar3 - LinuxServer.io

    linuxserver/mylar3

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Mylar3 releases
    nightly Commits to Mylar3 python3-dev branch

    Application Setup

    The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + mylar3 - LinuxServer.io       

    linuxserver/mylar3

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Mylar3 releases
    nightly Commits to Mylar3 python3-dev branch

    Application Setup

    The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       mylar3:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8090 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation

    Volume Mappings (-v)

    Volume Function
    /config Where mylar should store config files.
    /comics Map to your comics folder.
    /downloads Map to your downloads folder.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mylar3 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar3
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mylar3
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mylar3:latest

    Versions

    • 12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3.
    • 01.02.22: - Rebase to alpine 3.15.
    • 02.11.21: - Rebase to alpine 3.14. Remove pathlib.py.
    • 25.05.21: - Add libwebp support.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 03.01.21: - Output mylar log to docker log.
    • 21.12.20: - Release nightly tag based on commits to upstream python3-dev branch.
    • 28.09.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mylar3 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar3
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mylar3
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mylar3:latest

    Versions

    • 12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3.
    • 01.02.22: - Rebase to alpine 3.15.
    • 02.11.21: - Rebase to alpine 3.14. Remove pathlib.py.
    • 25.05.21: - Add libwebp support.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 03.01.21: - Output mylar log to docker log.
    • 21.12.20: - Release nightly tag based on commits to upstream python3-dev branch.
    • 28.09.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-mysql-workbench/index.html b/images/docker-mysql-workbench/index.html index 53701ab002..9c22d87725 100644 --- a/images/docker-mysql-workbench/index.html +++ b/images/docker-mysql-workbench/index.html @@ -1,4 +1,4 @@ - mysql-workbench - LinuxServer.io

    linuxserver/mysql-workbench

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + mysql-workbench - LinuxServer.io       

    linuxserver/mysql-workbench

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       mysql-workbench:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Mysql Workbench desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings.

    Miscellaneous Options

    Parameter Function
    --cap-add= Required for keyring functionality

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mysql-workbench /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mysql-workbench
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mysql-workbench
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mysql-workbench:latest

    Versions

    • 15.09.22: - Migrate to s6v3.
    • 26.07.22: - Rebase on jammy.
    • 20.04.21: - Rebase on focal.
    • 18.01.21: - Update libpython dependency.
    • 26.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it mysql-workbench /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mysql-workbench
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' mysql-workbench
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mysql-workbench:latest

    Versions

    • 15.09.22: - Migrate to s6v3.
    • 26.07.22: - Rebase on jammy.
    • 20.04.21: - Rebase on focal.
    • 18.01.21: - Update libpython dependency.
    • 26.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-nano-discord-bot/index.html b/images/docker-nano-discord-bot/index.html index 96906082d6..7e4b6a9d20 100644 --- a/images/docker-nano-discord-bot/index.html +++ b/images/docker-nano-discord-bot/index.html @@ -1,4 +1,4 @@ - nano-discord-bot - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/nano-discord-bot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + nano-discord-bot - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/nano-discord-bot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=nano-discord-bot \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -30,4 +30,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ Hosted wallet endpoint to use.
    RPC_URL=https://nano.linuxserver.io:7077 RPC endpoint to publish blocks to and ingest account information.
    FAUCET_KEY=XXXXXXXXXXXXX The private key for your faucet account.
    DISCORD_KEY=XXXXXXXXXXXXX Discord api key for the bot.
    FAUCET_AMOUNT="1000" Amount to distribute to individual Discord users in Nano.

    Volume Mappings (-v)

    Volume Function
    /config Database and Radarr configs

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here .

    Docker Mods

    Docker Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano-discord-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-discord-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano-discord-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lsiodev/nano-discord-bot

    Versions

    • 25.05.20: - Initial Release.
    \ No newline at end of file +

    Application Setup

    With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here .

    Docker Mods

    Docker Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano-discord-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-discord-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano-discord-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lsiodev/nano-discord-bot

    Versions

    • 25.05.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-nano-wallet/index.html b/images/docker-nano-wallet/index.html index 1b1566defd..4bd6866a4e 100644 --- a/images/docker-nano-wallet/index.html +++ b/images/docker-nano-wallet/index.html @@ -1,4 +1,4 @@ - nano-wallet - LinuxServer.io

    linuxserver/nano-wallet

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    This container is a simple nginx wrapper for the light wallet located here. You will need to pass a valid RPC host when accessing this container.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information.

    Simply access the container at the URL:

    http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + nano-wallet - LinuxServer.io       

    linuxserver/nano-wallet

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    This container is a simple nginx wrapper for the light wallet located here. You will need to pass a valid RPC host when accessing this container.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information.

    Simply access the container at the URL:

    http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       nano-wallet:
    @@ -13,4 +13,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/nano-wallet:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Webserver port

    Environment Variables (-e)

    Env Function

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano-wallet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-wallet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano-wallet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nano-wallet:latest

    Versions

    • 01.06.20: - Rebasing to alpine 3.12.
    • 23.05.20: - Initial Release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano-wallet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-wallet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano-wallet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nano-wallet:latest

    Versions

    • 01.06.20: - Rebasing to alpine 3.12.
    • 23.05.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-nano/index.html b/images/docker-nano/index.html index b59ee01296..7198e32565 100644 --- a/images/docker-nano/index.html +++ b/images/docker-nano/index.html @@ -1,4 +1,4 @@ - nano - LinuxServer.io

    linuxserver/nano

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Nano releases
    beta Beta Nano releases

    Application Setup

    Your Genesis account

    By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000, this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables:

    docker run --rm --entrypoint /genesis.sh linuxserver/nano
    + nano - LinuxServer.io       

    linuxserver/nano

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Nano releases
    beta Beta Nano releases

    Application Setup

    Your Genesis account

    By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000, this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables:

    docker run --rm --entrypoint /genesis.sh linuxserver/nano
     Generating Genesis block
     !!!!!!! ACCOUNT INFO SAVE THIS INFORMATION IT WILL NOT BE SHOWN AGAIN !!!!!!!!
     Private Key: CD4CD6B1E5523D4B5AEDD2B1E5A447C6C6797E729A531A95F9AD7937FC7CD9EA
    @@ -133,4 +133,4 @@ root@f1df092971f0:/# curl -d '{ "action": "wallet_add",
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8075 Nano communication port
    3000 RPC interface filtered through a proxy
    3001 Https RPC interface filtered through a proxy

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    PEER_HOST=localhost Default peer host (can be overidden with an array by command line options)
    LIVE_GENESIS_PUB=GENESIS_PUBLIC Genesis block public key
    LIVE_GENESIS_ACCOUNT=nano_xxxxxx Genesis block account
    LIVE_GENESIS_WORK=WORK_FOR_BLOCK Genesis block proof of work
    LIVE_GENESIS_SIG=BLOCK_SIGNATURE Genesis block signature
    CLI_OPTIONS=--config node.enable_voting=true Node run command cli args
    LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z HTTP/HTTPS endpoint to download a 7z file with the data.ldb to bootstrap to this node

    Volume Mappings (-v)

    Volume Function
    /config Main storage for config and blockchain

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nano:latest

    Versions

    • 02.06.20: - Rebase to Alpine 3.12.
    • 28.05.20: - Add beta tag.
    • 17.05.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nano /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nano
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nano:latest

    Versions

    • 02.06.20: - Rebase to Alpine 3.12.
    • 28.05.20: - Add beta tag.
    • 17.05.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-netbootxyz/index.html b/images/docker-netbootxyz/index.html index bfa32f2356..074aba79f6 100644 --- a/images/docker-netbootxyz/index.html +++ b/images/docker-netbootxyz/index.html @@ -1,4 +1,4 @@ - netbootxyz - LinuxServer.io

    linuxserver/netbootxyz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Web application for full self hosting
    tftp TFTP server only with NETBOOT.XYZ boot files

    Application Setup

    To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz. If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page.

    Router Setup Examples

    PFSense

    Services -> DHCP Server

    Set both the option for "TFTP Server" and the options under the Advanced "Network Booting" section. * check enable * Next server- IP used for TFTP Server * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    OPNsense

    Services -> DHCP Server

    Under the Advanced "Network Booting" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    Unifi Security Gateway (with the controller)

    Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe

    EdgeOS/VyOS

    Connect via SSH

    configure
    + netbootxyz - LinuxServer.io       

    linuxserver/netbootxyz

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Web application for full self hosting
    tftp TFTP server only with NETBOOT.XYZ boot files

    Application Setup

    To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz. If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page.

    Router Setup Examples

    PFSense

    Services -> DHCP Server

    Set both the option for "TFTP Server" and the options under the Advanced "Network Booting" section. * check enable * Next server- IP used for TFTP Server * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    OPNsense

    Services -> DHCP Server

    Under the Advanced "Network Booting" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    Unifi Security Gateway (with the controller)

    Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe

    EdgeOS/VyOS

    Connect via SSH

    configure
     set service dhcp-server use-dnsmasq enable
     set service dns forwarding options "dhcp-match=set:bios,60,PXEClient:Arch:00000"
     set service dns forwarding options "dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP"
    @@ -88,4 +88,4 @@ uci commit
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Web configuration interface.
    69/udp TFTP Port.
    80 NGINX server for hosting assets.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest)
    PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia)
    SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/)

    Volume Mappings (-v)

    Volume Function
    /config Storage for boot menu files and web application config
    /assets Storage for NETBOOT.XYZ bootable assets (live CDs and other files)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it netbootxyz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbootxyz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' netbootxyz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/netbootxyz:latest

    Versions

    • 12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 13.12.19: - Swapping latest tag over to webapp stack for management.
    • 10.12.19: - Adding tftp branch to provide tftp only option to latest users.
    • 22.10.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it netbootxyz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbootxyz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' netbootxyz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/netbootxyz:latest

    Versions

    • 12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 13.12.19: - Swapping latest tag over to webapp stack for management.
    • 10.12.19: - Adding tftp branch to provide tftp only option to latest users.
    • 22.10.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-netbox/index.html b/images/docker-netbox/index.html index 2007b26a28..ab7e8508a5 100644 --- a/images/docker-netbox/index.html +++ b/images/docker-netbox/index.html @@ -1,4 +1,4 @@ - netbox - LinuxServer.io

    linuxserver/netbox

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Netbox requires a postgres database and a redis instance.

    Access the WebUI at :8000. For more information, check out NetBox.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + netbox - LinuxServer.io       

    linuxserver/netbox

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Netbox requires a postgres database and a redis instance.

    Access the WebUI at :8000. For more information, check out NetBox.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       netbox:
    @@ -65,4 +65,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 will map the container's port 8000 to port 8000 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=<TZ> Timezone (i.e., America/New_York)
    SUPERUSER_EMAIL=<SUPERUSER_EMAIL> Email address for admin account
    SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD> Password for admin account
    ALLOWED_HOST=<ALLOWED_HOST> The hostname you will use to access the app (i.e., netbox.example.com)
    DB_NAME=<DB_NAME> Database name (default: netbox)
    DB_USER=<DB_USER> Database user
    DB_PASSWORD=<DB_PASSWORD> Database password
    DB_HOST=<DB_HOST> Database host (default: postgres)
    DB_PORT=<DB_PORT> Database port (defaul: 5432)
    REDIS_HOST=<REDIS_HOST> Redis host (default: redis)
    REDIS_PORT=<REDIS_PORT> Redis port number (default: 6379)
    REDIS_PASSWORD=<REDIS_PASSWORD> Redis password (default: none)
    REDIS_DB_TASK=<REDIS_DB_TASK> Redis database ID for tasks (default: 0)
    REDIS_DB_CACHE=<REDIS_DB_CACHE> Redis database ID for caching (default: 1)
    BASE_PATH=<BASE_PATH> The path you will use to access the app (i.e., /netbox, optional, default: none)
    REMOTE_AUTH_ENABLED=<REMOTE_AUTH_ENABLED> Enable remote authentication (optional, default: False)
    REMOTE_AUTH_BACKEND=<REMOTE_AUTH_BACKEND> Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend)
    REMOTE_AUTH_HEADER=<REMOTE_AUTH_HEADER> Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER)
    REMOTE_AUTH_AUTO_CREATE_USER=<REMOTE_AUTH_AUTO_CREATE_USER> If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False)
    REMOTE_AUTH_DEFAULT_GROUPS=<REMOTE_AUTH_DEFAULT_GROUPS> The list of groups to assign a new user account when created using remote authentication (optional, default: [])
    REMOTE_AUTH_DEFAULT_PERMISSIONS=<REMOTE_AUTH_DEFAULT_PERMISSIONS> A mapping of permissions to assign a new user account when created using remote authentication (optional, default: {})

    Volume Mappings (-v)

    Volume Function
    /config config directory volume mapping

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it netbox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' netbox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/netbox:latest

    Versions

    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 01.08.22: - Remove py3-pillow, add tiff to fix deps.
    • 26.07.22: - Add py3-pillow package back on arm to fix build issue.
    • 10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0.
    • 10.12.21: - Rebase to Alpine 3.15.
    • 26.04.21: - Added Redis database environment variables.
    • 03.02.21: - Added remote authentication environment variables.
    • 02.01.21: - Added BASE_PATH environment variable.
    • 23.08.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it netbox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' netbox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/netbox:latest

    Versions

    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 01.08.22: - Remove py3-pillow, add tiff to fix deps.
    • 26.07.22: - Add py3-pillow package back on arm to fix build issue.
    • 10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0.
    • 10.12.21: - Rebase to Alpine 3.15.
    • 26.04.21: - Added Redis database environment variables.
    • 03.02.21: - Added remote authentication environment variables.
    • 02.01.21: - Added BASE_PATH environment variable.
    • 23.08.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-nextcloud/index.html b/images/docker-nextcloud/index.html index a4a91141a9..7e75f351ff 100644 --- a/images/docker-nextcloud/index.html +++ b/images/docker-nextcloud/index.html @@ -1,4 +1,4 @@ - nextcloud - LinuxServer.io

    linuxserver/nextcloud

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nextcloud gives you access to all your files wherever you are.

    Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Nextcloud releases

    Application Setup

    Access the webui at https://<your-ip>:443, for more information check out Nextcloud.

    Docker image update and recreation of container alone won't update nextcloud version.

    In order to update nextcloud version, you have two options, firstly make sure you are using the latest docker image,then either

    1. Perform the in app gui update.
    2. Use the CLI version by running docker exec -it nextcloud updater.phar (Both of these are described here)

    Note: Both occ and updater.phar can be run without prepending with sudo -u abc php or sudo -u www-data php

    If you are not customizing our default nginx configuration you will need to remove the file:

    /config/nginx/site-confs/default.conf
    + nextcloud - LinuxServer.io       

    linuxserver/nextcloud

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nextcloud gives you access to all your files wherever you are.

    Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Nextcloud releases

    Application Setup

    Access the webui at https://<your-ip>:443, for more information check out Nextcloud.

    Docker image update and recreation of container alone won't update nextcloud version.

    In order to update nextcloud version, you have two options, firstly make sure you are using the latest docker image,then either

    1. Perform the in app gui update.
    2. Use the CLI version by running docker exec -it nextcloud updater.phar (Both of these are described here)

    Note: Both occ and updater.phar can be run without prepending with sudo -u abc php or sudo -u www-data php

    If you are not customizing our default nginx configuration you will need to remove the file:

    /config/nginx/site-confs/default.conf
     
    Then restart the container to replace it with the latest one.

    Collaborative Editing

    Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffice) only work on x86_64 systems with glibc, and therefore they are not compatible with our images. You should create separate containers for them and set them up in Nextcloud with their respective connector addons.

    If (auto) installed, those built-in packages may cause instability and should be removed.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    443 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Nextcloud configs.
    /data Your personal data.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nextcloud /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nextcloud
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 30.09.22: - Disabled output_buffering as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html
    • 21.05.22: - Update version check endpoint.
    • 28.04.22: - Increase OPCache interned strings buffered setting to 16.
    • 14.04.22: - Nginx default site config updated for v23 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). Fix LDAP connection.
    • 11.09.21: - Rebasing to alpine 3.14
    • 21.03.21: - Publish php8 tag for testing.
    • 25.02.21: - Nginx default site config updated for v21 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup.
    • 20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article.
    • 12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 03.06.20: - Rebasing to alpine 3.12
    • 03.06.20: - Add php7-bcmath and php7-fileinfo
    • 31.05.20: - Add aliases for occ and updater.phar
    • 31.03.20: - Allow crontab to be user customized, fix logrotate.
    • 17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.11.19: - Nginx default site config updated for v17 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 28.10.19: - Change cronjob to run every 5 minutes.
    • 24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 14.07.19: - Download nextcloud during build time.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Updating base nginx config to sync up with v15 requirements.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.01.19: - Add php7-phar for occ upgrades.
    • 05.09.18: - Rebase to alpine 3.8.
    • 11.06.18: - Use latest rather than specific version for initial install.
    • 26.04.18: - Bump default install to 13.0.1.
    • 06.02.18: - Bump default install to 13.0.0.
    • 26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5.
    • 12.12.17: - Bump default install to 12.0.4, fix continuation lines.
    • 15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions.
    • 20.09.17: - Bump default install to 12.0.3.
    • 19.08.17: - Bump default install to 12.0.2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line.
    • 03.05.17: - Use community repo of memcache.
    • 07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nextcloud /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nextcloud
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nextcloud
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nextcloud:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 30.09.22: - Disabled output_buffering as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html
    • 21.05.22: - Update version check endpoint.
    • 28.04.22: - Increase OPCache interned strings buffered setting to 16.
    • 14.04.22: - Nginx default site config updated for v23 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). Fix LDAP connection.
    • 11.09.21: - Rebasing to alpine 3.14
    • 21.03.21: - Publish php8 tag for testing.
    • 25.02.21: - Nginx default site config updated for v21 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup.
    • 20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article.
    • 12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 03.06.20: - Rebasing to alpine 3.12
    • 03.06.20: - Add php7-bcmath and php7-fileinfo
    • 31.05.20: - Add aliases for occ and updater.phar
    • 31.03.20: - Allow crontab to be user customized, fix logrotate.
    • 17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.11.19: - Nginx default site config updated for v17 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 28.10.19: - Change cronjob to run every 5 minutes.
    • 24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 14.07.19: - Download nextcloud during build time.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Updating base nginx config to sync up with v15 requirements.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.01.19: - Add php7-phar for occ upgrades.
    • 05.09.18: - Rebase to alpine 3.8.
    • 11.06.18: - Use latest rather than specific version for initial install.
    • 26.04.18: - Bump default install to 13.0.1.
    • 06.02.18: - Bump default install to 13.0.0.
    • 26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5.
    • 12.12.17: - Bump default install to 12.0.4, fix continuation lines.
    • 15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions.
    • 20.09.17: - Bump default install to 12.0.3.
    • 19.08.17: - Bump default install to 12.0.2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line.
    • 03.05.17: - Use community repo of memcache.
    • 07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.
    \ No newline at end of file diff --git a/images/docker-nginx/index.html b/images/docker-nginx/index.html index 0c17f49eac..47f4f1871d 100644 --- a/images/docker-nginx/index.html +++ b/images/docker-nginx/index.html @@ -1,4 +1,4 @@ - nginx - LinuxServer.io

    linuxserver/nginx

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nginx is a simple webserver with php support. The config files reside in /config for easy user customization.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Add your web files to /config/www for hosting.
    Modify the nginx, php and site config files under /config as needed
    Protip: This container is best combined with a sql server, e.g. mariadb

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + nginx - LinuxServer.io       

    linuxserver/nginx

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nginx is a simple webserver with php support. The config files reside in /config for easy user customization.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Add your web files to /config/www for hosting.
    Modify the nginx, php and site config files under /config as needed
    Protip: This container is best combined with a sql server, e.g. mariadb

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       nginx:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http
    443 https

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Contains your www content and all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nginx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nginx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nginx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nginx:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.05.22: - Install nginx version from 3.14.
    • 01.07.21: - Rebasing to alpine 3.14.
    • 24.06.21: - Update default nginx conf folder.
    • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
    • 13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod.
    • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
    • 08.09.20: - Add php7-xsl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Fix unwanted shutdown of the container.
    • 11.03.20: - Add php7-sodium.
    • 18.02.20: - Add geoip2, suppress lua warning.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 13.11.19: - Add php7-pdo_odbc.
    • 24.10.19: - Add php7-pecl-imagick.
    • 06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp.
    • 02.08.19: - Add php7-ldap.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Add php intl and posix modules.
    • 28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it).
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.18: - Attempt to upgrade packages during build.
    • 28.09.18: - Multi-arch image.
    • 17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage.
    • 11.05.18: - Add php pgsql support.
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3.
    • 05.01.18: - Rebase to alpine 3.7.
    • 08.11.17: - Add php7 soap module.
    • 31.10.17: - Add php7 exif and xmlreader modules.
    • 30.09.17: - Copy additional root files into image.
    • 24.09.17: - Add memcached service.
    • 31.08.17: - Add php7-phar.
    • 14.07.17: - Enable modules dynamically in nginx.conf.
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf.
    • 05.06.17: - Add php7-bz2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 18.04.17: - Add php7-sockets.
    • 27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add badges to README.
    • 05.12.15: - Intial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nginx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nginx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nginx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nginx:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.05.22: - Install nginx version from 3.14.
    • 01.07.21: - Rebasing to alpine 3.14.
    • 24.06.21: - Update default nginx conf folder.
    • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
    • 13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod.
    • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
    • 08.09.20: - Add php7-xsl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Fix unwanted shutdown of the container.
    • 11.03.20: - Add php7-sodium.
    • 18.02.20: - Add geoip2, suppress lua warning.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 13.11.19: - Add php7-pdo_odbc.
    • 24.10.19: - Add php7-pecl-imagick.
    • 06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp.
    • 02.08.19: - Add php7-ldap.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Add php intl and posix modules.
    • 28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it).
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.18: - Attempt to upgrade packages during build.
    • 28.09.18: - Multi-arch image.
    • 17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage.
    • 11.05.18: - Add php pgsql support.
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3.
    • 05.01.18: - Rebase to alpine 3.7.
    • 08.11.17: - Add php7 soap module.
    • 31.10.17: - Add php7 exif and xmlreader modules.
    • 30.09.17: - Copy additional root files into image.
    • 24.09.17: - Add memcached service.
    • 31.08.17: - Add php7-phar.
    • 14.07.17: - Enable modules dynamically in nginx.conf.
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf.
    • 05.06.17: - Add php7-bz2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 18.04.17: - Add php7-sockets.
    • 27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add badges to README.
    • 05.12.15: - Intial Release.
    \ No newline at end of file diff --git a/images/docker-ngircd/index.html b/images/docker-ngircd/index.html index 01bcf7539f..3a8891742c 100644 --- a/images/docker-ngircd/index.html +++ b/images/docker-ngircd/index.html @@ -1,4 +1,4 @@ - ngircd - LinuxServer.io

    linuxserver/ngircd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • To setup ngircd you will need to edit /config/ngircd.conf which is created the first time the container is run, edit the file and restart the container to implement any config changes.
    • For information see the ngircd site here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + ngircd - LinuxServer.io       

    linuxserver/ngircd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • To setup ngircd you will need to edit /config/ngircd.conf which is created the first time the container is run, edit the file and restart the container to implement any config changes.
    • For information see the ngircd site here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       ngircd:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    6667 ngircd port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use e.g. Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Where ngircd.conf is stored

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ngircd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ngircd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ngircd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ngircd:latest

    Versions

    • 11.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 04.07.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ngircd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ngircd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ngircd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ngircd:latest

    Versions

    • 11.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 04.07.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-nntp2nntp/index.html b/images/docker-nntp2nntp/index.html index 381925e578..fccd32e754 100644 --- a/images/docker-nntp2nntp/index.html +++ b/images/docker-nntp2nntp/index.html @@ -1,4 +1,4 @@ - nntp2nntp - LinuxServer.io

    linuxserver/nntp2nntp

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.

    Warning

    Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users.

    New user passwords can be created by running the password hash generator

    docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass
    + nntp2nntp - LinuxServer.io       

    linuxserver/nntp2nntp

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.

    Warning

    Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users.

    New user passwords can be created by running the password hash generator

    docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass
     
    entering the desired password and copying the resulting string to the relevant user line in /config/nntp2nntp.conf

    Example with a user called Dave and with a password of password

    Dave    = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
     

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    1563 will map the container's port 1563 to port 1563 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    PUID=<yourUID> specify your UID
    PGID=<yourGID> specify your GID
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config this will store config on the docker host

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nntp2nntp /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nntp2nntp
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nntp2nntp
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nntp2nntp:latest

    Versions

    • 10.10.22: - Rebase to Alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.04.19: - Multiarch builds and build from Github fork.
    • 15.05.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nntp2nntp /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nntp2nntp
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nntp2nntp
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nntp2nntp:latest

    Versions

    • 10.10.22: - Rebase to Alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.04.19: - Multiarch builds and build from Github fork.
    • 15.05.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-nzbget/index.html b/images/docker-nzbget/index.html index 372f000d80..1a8aff68c1 100644 --- a/images/docker-nzbget/index.html +++ b/images/docker-nzbget/index.html @@ -1,4 +1,4 @@ - nzbget - LinuxServer.io

    linuxserver/nzbget

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable nzbget releases
    testing nzbget pre-releases

    Application Setup

    Webui can be found at <your-ip>:6789 and the default login details (change ASAP) are

    login:nzbget, password:tegbzn6789

    To allow scheduling, from the webui set the time correction value in settings/logging.

    To change umask settings.

    scroll to bottom, set umask like this (example shown for unraid)

    You can add an additional mount point for intermediate unpacking folder with:-

    -v </path/to/intermedia_unpacking_folder>:/intermediate

    for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate

    Media folders

    We have set /downloads as a optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + nzbget - LinuxServer.io       

    linuxserver/nzbget

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable nzbget releases
    testing nzbget pre-releases

    Application Setup

    Webui can be found at <your-ip>:6789 and the default login details (change ASAP) are

    login:nzbget, password:tegbzn6789

    To allow scheduling, from the webui set the time correction value in settings/logging.

    To change umask settings.

    scroll to bottom, set umask like this (example shown for unraid)

    You can add an additional mount point for intermediate unpacking folder with:-

    -v </path/to/intermedia_unpacking_folder>:/intermediate

    for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate

    Media folders

    We have set /downloads as a optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       nzbget:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    6789 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    NZBGET_USER=nzbget Specify the user for web authentication.
    NZBGET_PASS=tegbzn6789 Specify the password for web authentication.

    Volume Mappings (-v)

    Volume Function
    /config NZBGet App data.
    /downloads Location of downloads on disk.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nzbget /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbget
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nzbget
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbget:latest

    Versions

    • 27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd
    • 13.11.22: - Rebase master to 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials.
    • 04.07.21: - Rebase to alpine 3.14.
    • 28.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Fix python dependencies.
    • 24.08.20: - Fix ignored umask environment variable.
    • 08.06.20: - Symlink python3 bin to python.
    • 01.06.20: - Rebasing to alpine 3.12. Removing python2.
    • 13.05.20: - Add rarfile python package (for DeepUnrar).
    • 01.01.20: - Add python3 alongside python2 during transition.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add apprise, chardet & pynzbget packages.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 25.02.19: - Rebasing to alpine 3.9.
    • 20.01.19: - Add pipeline logic and multi arch, build from source.
    • 21.08.18: - Rebase to alpine 3.8.
    • 20.02.18: - Add note about supplemental mount point for intermediate unpacking.
    • 13.12.17: - Rebase to alpine 3.7.
    • 02.09.17: - Place app in subfolder rather than /app.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Rebase to alpine 3.6.
    • 20.04.17: - Add testing branch.
    • 06.02.17: - Rebase to alpine 3.5.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, perms fix on /app to allow updates.
    • 19.08.16: - Rebase to alpine linux.
    • 18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nzbget /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbget
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nzbget
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbget:latest

    Versions

    • 27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd
    • 13.11.22: - Rebase master to 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials.
    • 04.07.21: - Rebase to alpine 3.14.
    • 28.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Fix python dependencies.
    • 24.08.20: - Fix ignored umask environment variable.
    • 08.06.20: - Symlink python3 bin to python.
    • 01.06.20: - Rebasing to alpine 3.12. Removing python2.
    • 13.05.20: - Add rarfile python package (for DeepUnrar).
    • 01.01.20: - Add python3 alongside python2 during transition.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add apprise, chardet & pynzbget packages.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 25.02.19: - Rebasing to alpine 3.9.
    • 20.01.19: - Add pipeline logic and multi arch, build from source.
    • 21.08.18: - Rebase to alpine 3.8.
    • 20.02.18: - Add note about supplemental mount point for intermediate unpacking.
    • 13.12.17: - Rebase to alpine 3.7.
    • 02.09.17: - Place app in subfolder rather than /app.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Rebase to alpine 3.6.
    • 20.04.17: - Add testing branch.
    • 06.02.17: - Rebase to alpine 3.5.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, perms fix on /app to allow updates.
    • 19.08.16: - Rebase to alpine linux.
    • 18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.
    \ No newline at end of file diff --git a/images/docker-nzbhydra2/index.html b/images/docker-nzbhydra2/index.html index d3f8bcf1c8..0085c49e7c 100644 --- a/images/docker-nzbhydra2/index.html +++ b/images/docker-nzbhydra2/index.html @@ -1,4 +1,4 @@ - nzbhydra2 - LinuxServer.io

    linuxserver/nzbhydra2

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nzbhydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/nzbhydra2:v2.10.2-ls49

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases
    dev Prereleases from their GitHub

    Application Setup

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + nzbhydra2 - LinuxServer.io       

    linuxserver/nzbhydra2

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Nzbhydra2 is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/nzbhydra2:v2.10.2-ls49

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases
    dev Prereleases from their GitHub

    Application Setup

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       nzbhydra2:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5076 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where nzbhydra2 should store config files.
    /downloads NZB download folder.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nzbhydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbhydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nzbhydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbhydra2:latest

    Versions

    • 10.12.22: - Bump master JRE to v17. Default mapIpToHost to false.
    • 11.09.22: - Migrate to s6v3.
    • 03.05.22: - Rebase to Jammy.
    • 18.04.22: - Rebase to Alpine 3.15.
    • 01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip.
    • 14.04.20: - Correct Name, Hydra2 -> NZBHydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it nzbhydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbhydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' nzbhydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/nzbhydra2:latest

    Versions

    • 10.12.22: - Bump master JRE to v17. Default mapIpToHost to false.
    • 11.09.22: - Migrate to s6v3.
    • 03.05.22: - Rebase to Jammy.
    • 18.04.22: - Rebase to Alpine 3.15.
    • 01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip.
    • 14.04.20: - Correct Name, Hydra2 -> NZBHydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ombi/index.html b/images/docker-ombi/index.html index 5cae7adc48..e3189d0673 100644 --- a/images/docker-ombi/index.html +++ b/images/docker-ombi/index.html @@ -1,4 +1,4 @@ - ombi - LinuxServer.io

    linuxserver/ombi

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server!

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Ombi releases
    development Releases from the develop branch of Ombi

    Application Setup

    Access the webui at <your-ip>:3579. Follow the setup wizard on initial install. Then configure the required services.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + ombi - LinuxServer.io       

    linuxserver/ombi

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server!

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Ombi releases
    development Releases from the develop branch of Ombi

    Application Setup

    Access the webui at <your-ip>:3579. Follow the setup wizard on initial install. Then configure the required services.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       ombi:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3579 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    BASE_URL=/ombi Subfolder can optionally be defined as an env variable for reverse proxies. Keep in mind that once this value is defined, the gui setting for base url no longer works. To use the gui setting, remove this env variable.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ombi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ombi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ombi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ombi:latest

    Versions

    • 11.09.22: - Migrate to s6v3.
    • 01.05.22: - Rebase to Jammy.
    • 26.04.21: - Update tarball name, allow for v4 builds in stable.
    • 18.01.21: - Update upstream repo. Deprecate v4-preview tag, which is merged to development tag upstream.
    • 14.04.20: - Add Ombi donate links.
    • 10.05.19: - Added an optional env variable for base url setting.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Clarify info on tags and development builds.
    • 25.01.19: - Add info on tags and development builds.
    • 09.01.19: - Switch to multi-arch builds and add aarch64 image.
    • 11.03.18: - Add HOME env to Dockerfile.
    • 05.03.18: - Switch to Ombi v3 stable based on .net core.
    • 26.01.18: - Fix continuation lines.
    • 16.04.17: - Switch to using inhouse mono baseimage.
    • 17.02.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ombi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ombi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ombi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ombi:latest

    Versions

    • 11.09.22: - Migrate to s6v3.
    • 01.05.22: - Rebase to Jammy.
    • 26.04.21: - Update tarball name, allow for v4 builds in stable.
    • 18.01.21: - Update upstream repo. Deprecate v4-preview tag, which is merged to development tag upstream.
    • 14.04.20: - Add Ombi donate links.
    • 10.05.19: - Added an optional env variable for base url setting.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Clarify info on tags and development builds.
    • 25.01.19: - Add info on tags and development builds.
    • 09.01.19: - Switch to multi-arch builds and add aarch64 image.
    • 11.03.18: - Add HOME env to Dockerfile.
    • 05.03.18: - Switch to Ombi v3 stable based on .net core.
    • 26.01.18: - Fix continuation lines.
    • 16.04.17: - Switch to using inhouse mono baseimage.
    • 17.02.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-openssh-server/index.html b/images/docker-openssh-server/index.html index ee33aa9ab3..973884c2db 100644 --- a/images/docker-openssh-server/index.html +++ b/images/docker-openssh-server/index.html @@ -1,4 +1,4 @@ - openssh-server - LinuxServer.io

    linuxserver/openssh-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    If PUBLIC_KEY or PUBLIC_KEY_FILE, or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys. If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys. PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets.

    We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints.

    Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP

    Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password.

    The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article.

    Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder.

    It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access.

    TIPS

    You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname

    Key Generation

    This container has a helper script to generate an ssh private/public key. In order to generate a key please run:

    docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server
    + openssh-server - LinuxServer.io       

    linuxserver/openssh-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    If PUBLIC_KEY or PUBLIC_KEY_FILE, or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys. If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys. PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets.

    We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints.

    Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP

    Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password.

    The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article.

    Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder.

    It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access.

    TIPS

    You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname

    Key Generation

    This container has a helper script to generate an ssh private/public key. In order to generate a key please run:

    docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server
     

    Then simply follow the prompts. The keys generated by this script are only displayed on your console output, so make sure to save them somewhere after generation.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -46,4 +46,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    2222 ssh port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    PUBLIC_KEY=yourpublickey Optional ssh public key, which will automatically be added to authorized_keys.
    PUBLIC_KEY_FILE=/path/to/file Optionally specify a file containing the public key (works with docker secrets).
    PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys Optionally specify a directory containing the public keys (works with docker secrets).
    PUBLIC_KEY_URL=https://github.com/username.keys Optionally specify a URL containing the public key.
    SUDO_ACCESS=false Set to true to allow linuxserver.io, the ssh user, sudo access. Without USER_PASSWORD set, this will allow passwordless sudo access.
    PASSWORD_ACCESS=false Set to true to allow user/password ssh access. You will want to set USER_PASSWORD or USER_PASSWORD_FILE as well.
    USER_PASSWORD=password Optionally set a sudo password for linuxserver.io, the ssh user. If this or USER_PASSWORD_FILE are not set but SUDO_ACCESS is set to true, the user will have passwordless sudo access.
    USER_PASSWORD_FILE=/path/to/file Optionally specify a file that contains the password. This setting supersedes the USER_PASSWORD option (works with docker secrets).
    USER_NAME=linuxserver.io Optionally specify a user name (Default:linuxserver.io)

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function
    --hostname= Optionally the hostname can be defined.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openssh-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openssh-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openssh-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openssh-server:latest

    Versions

    • 18.10.22: - Fix wrong behavior of password/passwordless sudo
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.09.22: - add netcat-openbsd with support for proxies.
    • 18.07.22: - Fix service perms to comply with upgrade to s6 v3.
    • 16.04.22: - Rebase to alpine 3.15.
    • 16.11.21: - Add PUBLIC_KEY_URL option
    • 28.06.21: - Rebasing to alpine 3.14. Add support for PAM.
    • 10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp.
    • 21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban.
    • 20.10.20: - Set umask for sftp.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.01.20: - Add key generation script.
    • 13.01.20: - Add openssh-sftp-server.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 17.10.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openssh-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openssh-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openssh-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openssh-server:latest

    Versions

    • 18.10.22: - Fix wrong behavior of password/passwordless sudo
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.09.22: - add netcat-openbsd with support for proxies.
    • 18.07.22: - Fix service perms to comply with upgrade to s6 v3.
    • 16.04.22: - Rebase to alpine 3.15.
    • 16.11.21: - Add PUBLIC_KEY_URL option
    • 28.06.21: - Rebasing to alpine 3.14. Add support for PAM.
    • 10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp.
    • 21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban.
    • 20.10.20: - Set umask for sftp.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.01.20: - Add key generation script.
    • 13.01.20: - Add openssh-sftp-server.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 17.10.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-openvpn-as/index.html b/images/docker-openvpn-as/index.html index 8c0de0079f..445cf38696 100644 --- a/images/docker-openvpn-as/index.html +++ b/images/docker-openvpn-as/index.html @@ -1,4 +1,4 @@ - openvpn-as - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard

    linuxserver/openvpn-as

    GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry MicroBadger Layers Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic
    xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial

    Application Setup

    The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password

    During first login, make sure that the "Authentication" in the webui is set to "Local" instead of "PAM". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation).

    The "admin" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the "admin" user in the gui, 4) Modify the as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~#boot_pam_users.0=admin~~ boot_pam_users.0=kjhvkhv (this only has to be done once and will survive container recreation)
    * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above.

    To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the "Hostname or IP Address" section to either your domain name or public ip address.

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + openvpn-as - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard

    linuxserver/openvpn-as

    GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry MicroBadger Layers Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic
    xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial

    Application Setup

    The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password

    During first login, make sure that the "Authentication" in the webui is set to "Local" instead of "PAM". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation).

    The "admin" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the "admin" user in the gui, 4) Modify the as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~#boot_pam_users.0=admin~~ boot_pam_users.0=kjhvkhv (this only has to be done once and will survive container recreation)
    * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above.

    To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the "Hostname or IP Address" section to either your domain name or public ip address.

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       openvpn-as:
    @@ -34,4 +34,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    943 Admin GUI port.
    9443 TCP port.
    1194/udp UDP port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    INTERFACE=eth0 With bridge networking, leave it as eth0 (or don't include at all), if host or macvlan, set it to your host's network interface, found by running ifconfig

    Volume Mappings (-v)

    Volume Function
    /config Where openvpn-as should store configuration files.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openvpn-as /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvpn-as
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openvpn-as
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openvpn-as

    Versions

    • 15.06.20: - Deprecate.
    • 15.06.20: - Add fixes for 2.9.0.
    • 04.11.20: - xenial tag is deprecated and there will be no further releases for that tag.
    • 22.06.20: - Added Support for persistent Customization Folders.
    • 26.03.20: - Switch to using the openvpn-as repo for packages.
    • 29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users.
    • 27.08.19: - Add new clients package to install and upgrade process.
    • 22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed.
    • 25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic.
    • 07.04.19: - Fix first time config.
    • 03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support.
    • 14.03.19: - Update deb package URL.
    • 21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes.
    • 12.02.19: - Rename github repo to match the docker hub repo and container name.
    • 07.02.19: - Add pipeline logic and multi arch.
    • 31.01.19: - Add port mappings to docker create sample in readme.
    • 26.01.19: - Removed privileged and host networking requirements, added cap-add=NET_ADMIN requirement instead. INTERFACE no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default.
    • 19.12.18: - Bump to version 2.6.1.
    • 10.07.18: - Bump to version 2.5.2.
    • 23.03.18: - Bump to version 2.5.
    • 14.12.17: - Consolidate layers and fix continuation lines.
    • 25.10.17: - Bump to version 2.1.12.
    • 18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user.
    • 31.07.17: - Fix updates of existing openvpn-as installs.
    • 07.07.17: - Bump to version 2.1.9.
    • 31.10.16: - Bump to version 2.1.4.
    • 14.10.16: - Add version layer information.
    • 13.09.16: - Rebuild due to push error to hub on last build.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 01.08.16: - Rebase to xenial.
    • 18.09.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openvpn-as /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvpn-as
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openvpn-as
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openvpn-as

    Versions

    • 15.06.20: - Deprecate.
    • 15.06.20: - Add fixes for 2.9.0.
    • 04.11.20: - xenial tag is deprecated and there will be no further releases for that tag.
    • 22.06.20: - Added Support for persistent Customization Folders.
    • 26.03.20: - Switch to using the openvpn-as repo for packages.
    • 29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users.
    • 27.08.19: - Add new clients package to install and upgrade process.
    • 22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed.
    • 25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic.
    • 07.04.19: - Fix first time config.
    • 03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support.
    • 14.03.19: - Update deb package URL.
    • 21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes.
    • 12.02.19: - Rename github repo to match the docker hub repo and container name.
    • 07.02.19: - Add pipeline logic and multi arch.
    • 31.01.19: - Add port mappings to docker create sample in readme.
    • 26.01.19: - Removed privileged and host networking requirements, added cap-add=NET_ADMIN requirement instead. INTERFACE no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default.
    • 19.12.18: - Bump to version 2.6.1.
    • 10.07.18: - Bump to version 2.5.2.
    • 23.03.18: - Bump to version 2.5.
    • 14.12.17: - Consolidate layers and fix continuation lines.
    • 25.10.17: - Bump to version 2.1.12.
    • 18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user.
    • 31.07.17: - Fix updates of existing openvpn-as installs.
    • 07.07.17: - Bump to version 2.1.9.
    • 31.10.16: - Bump to version 2.1.4.
    • 14.10.16: - Add version layer information.
    • 13.09.16: - Rebuild due to push error to hub on last build.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 01.08.16: - Rebase to xenial.
    • 18.09.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-openvscode-server/index.html b/images/docker-openvscode-server/index.html index 45e442f92b..20ffa263b4 100644 --- a/images/docker-openvscode-server/index.html +++ b/images/docker-openvscode-server/index.html @@ -1,4 +1,4 @@ - openvscode-server - LinuxServer.io

    linuxserver/openvscode-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases
    insiders Insiders releases

    Application Setup

    If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://<your-ip>:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://<your-ip>:3000.

    For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name "username"
    + openvscode-server - LinuxServer.io       

    linuxserver/openvscode-server

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases
    insiders Insiders releases

    Application Setup

    If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://<your-ip>:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://<your-ip>:3000.

    For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name "username"
     git config --global user.email "email address"
     

    When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at https://PORT.openvscode-server.domain.com very much like how code-server's port proxy function is handled. For that, a wildcard CNAME *.openvscode-server.domain.com needs to be created and the SWAG cert needs to cover those subdomains.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -35,4 +35,4 @@ git config --global 

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Web UI port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use.
    CONNECTION_TOKEN= Optional security token for accessing the Web UI (ie. supersecrettoken).
    CONNECTION_SECRET= Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. /path/to/file). Overrides CONNECTION_TOKEN.
    SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password.
    SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openvscode-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvscode-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openvscode-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openvscode-server:latest

    Versions

    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 12.02.22: - Update install-extension helper to compensate for upstream changes.
    • 04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 10.12.21: - Update deprecated connectionToken arg.
    • 30.11.21: - Fix app folder permissions, add the optional sudo password vars.
    • 29.11.21: - Create .profile and .bashrc for the user.
    • 29.11.21: - Release insiders tag.
    • 28.11.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it openvscode-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvscode-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' openvscode-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/openvscode-server:latest

    Versions

    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 12.02.22: - Update install-extension helper to compensate for upstream changes.
    • 04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 10.12.21: - Update deprecated connectionToken arg.
    • 30.11.21: - Fix app folder permissions, add the optional sudo password vars.
    • 29.11.21: - Create .profile and .bashrc for the user.
    • 29.11.21: - Release insiders tag.
    • 28.11.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-organizr/index.html b/images/docker-organizr/index.html index 7ad9c376ac..31f1a394fa 100644 --- a/images/docker-organizr/index.html +++ b/images/docker-organizr/index.html @@ -1,4 +1,4 @@ - organizr - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr

    linuxserver/organizr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Organizr is a HTPC/Homelab Services Organizer - Written in PHP

    Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup "Tabs" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs.

    For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + organizr - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr

    linuxserver/organizr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Organizr is a HTPC/Homelab Services Organizer - Written in PHP

    Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup "Tabs" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs.

    For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       organizr:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 will map the container's port 80 to port 9983 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=<your timezone, eg Europe/London> for specifying your timezone

    Volume Mappings (-v)

    Volume Function
    /config this is where your user data and logs will live

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    Dead simple to get running, create the container as instructed and start it. When up and running, load the site.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it organizr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f organizr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' organizr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/organizr

    Versions

    • 18.04.19: - Fix new install not working.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Fix permissions on new app location
    • 31.12.18: - Moved to pipeline building from v1-master branch
    • 05.09.18: - Rebase to Alpine 3.8
    • 10.01.18: - Rebase to Alpine 3.7
    • 25.05.17: - Rebase to Alpine 3.6
    • 02.05.17: - Added php7-curl package
    • 12.04.17: - Added php7-ldap package
    • 10.03.18: - Initial Release.
    \ No newline at end of file +

    Application Setup

    Dead simple to get running, create the container as instructed and start it. When up and running, load the site.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it organizr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f organizr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' organizr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/organizr

    Versions

    • 18.04.19: - Fix new install not working.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Fix permissions on new app location
    • 31.12.18: - Moved to pipeline building from v1-master branch
    • 05.09.18: - Rebase to Alpine 3.8
    • 10.01.18: - Rebase to Alpine 3.7
    • 25.05.17: - Rebase to Alpine 3.6
    • 02.05.17: - Added php7-curl package
    • 12.04.17: - Added php7-ldap package
    • 10.03.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-oscam/index.html b/images/docker-oscam/index.html index 3f8a66220d..129b0832b3 100644 --- a/images/docker-oscam/index.html +++ b/images/docker-oscam/index.html @@ -1,4 +1,4 @@ - oscam - LinuxServer.io

    linuxserver/oscam

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + oscam - LinuxServer.io       

    linuxserver/oscam

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       oscam:
    @@ -28,4 +28,4 @@
     

    Passing through Smart Card Readers

    If you want to pass through a smart card reader, you need to specify the reader with the --device= tag. The method used depends on how the reader is recognized. The first is /dev/ttyUSBX. To find the correct device, connect the reader and run dmesg | tail on the host. In the output you will find /dev/ttyUSBX, where X is the number of the device. If this is the first reader you connect to your host, it will be /dev/ttyUSB0. If you add one more it will be /dev/ttyUSB1.

    If there are no /dev/ttyUSBX device in dmesg | tail, you have to use the USB bus path. It will look similar to the below.

    /dev/bus/usb/001/001

    The important parts are the two numbers in the end. The first one is the Bus number, the second is the Device number. To find the Bus and Device number you have to run lsusb on the host, then find your USB device in the list and note the Bus and Device numbers.

    Here is an example of how to find the Bus and Device. The output of the lsusb command is below.

    Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121

    The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the --device= tag.

    --device=/dev/bus/usb/002/005

    If you have multiple smart card readers, you add one --device= tag for each reader.

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8888 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where oscam should store config files and logs.

    Device Mappings (--device)

    Parameter Function
    /dev/ttyUSB0 For passing through smart card readers.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it oscam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f oscam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' oscam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/oscam:latest

    Versions

    • 03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link.
    • 13.02.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 29.04.19: - Add revision check, so pipeline can build new revisions.
    • 28.04.19: - Switch back to streamboard svn to fix version not showing in UI.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 13.12.17: - Rebase to alpine 3.7.
    • 19.10.17: - Add ccid package for usb card readers.
    • 17.10.17: - Switch to using bzr for source code, streamboard awol.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 02.10.16: - Add info on passing through devices to README.
    • 25.09.16: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it oscam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f oscam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' oscam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/oscam:latest

    Versions

    • 03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link.
    • 13.02.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 29.04.19: - Add revision check, so pipeline can build new revisions.
    • 28.04.19: - Switch back to streamboard svn to fix version not showing in UI.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 13.12.17: - Rebase to alpine 3.7.
    • 19.10.17: - Add ccid package for usb card readers.
    • 17.10.17: - Switch to using bzr for source code, streamboard awol.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 02.10.16: - Add info on passing through devices to README.
    • 25.09.16: - Initial release.
    \ No newline at end of file diff --git a/images/docker-overseerr/index.html b/images/docker-overseerr/index.html index 55f0cb11b5..11ac4e3110 100644 --- a/images/docker-overseerr/index.html +++ b/images/docker-overseerr/index.html @@ -1,4 +1,4 @@ - overseerr - LinuxServer.io

    linuxserver/overseerr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from GitHub
    develop Development releases from commits in upstream develop branch

    Application Setup

    Access the webui at <your-ip>:5055, for more information check out Overseerr.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + overseerr - LinuxServer.io       

    linuxserver/overseerr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from GitHub
    develop Development releases from commits in upstream develop branch

    Application Setup

    Access the webui at <your-ip>:5055, for more information check out Overseerr.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       overseerr:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5055 Port for Overseerr's web interface.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it overseerr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f overseerr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' overseerr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/overseerr:latest

    Versions

    • 18.12.22: - Rebase main to 3.17.
    • 27.10.22: - Rebase main to 3.16, migrate to s6v3.
    • 20.08.22: - Don't install cypress.
    • 01.04.22: - Rebase main branch to Alpine 3.15.
    • 27.01.22: - Rebase develop branch to Alpine 3.15.
    • 04.01.22: - Remove cached files.
    • 10.10.21: - Add additional post-build cleanup.
    • 19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit.
    • 05.04.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it overseerr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f overseerr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' overseerr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/overseerr:latest

    Versions

    • 18.12.22: - Rebase main to 3.17.
    • 27.10.22: - Rebase main to 3.16, migrate to s6v3.
    • 20.08.22: - Don't install cypress.
    • 01.04.22: - Rebase main branch to Alpine 3.15.
    • 27.01.22: - Rebase develop branch to Alpine 3.15.
    • 04.01.22: - Remove cached files.
    • 10.10.21: - Add additional post-build cleanup.
    • 19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit.
    • 05.04.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-paperless-ng/index.html b/images/docker-paperless-ng/index.html index 0533f1d677..dc1e8af449 100644 --- a/images/docker-paperless-ng/index.html +++ b/images/docker-paperless-ng/index.html @@ -1,4 +1,4 @@ - paperless-ng - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    linuxserver/paperless-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + paperless-ng - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    linuxserver/paperless-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       paperless-ng:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /data Storage location for all paperless-ng data files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it paperless-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' paperless-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/paperless-ng:latest

    Versions

    • 05.09.22: - Deprecate.
    • 30.11.21: - Added in jbig2enc.
    • 07.10.21: - Fixed variable that determins if we should run redis locally.
    • 01.10.21: - Replaced uwsgi with gunicorn due to websocket issues.
    • 24.07.21: - Fixed directory config files (sqlite db) is all stored.
    • 23.07.21: - Fixed initial user creation.
    • 10.07.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it paperless-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' paperless-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/paperless-ng:latest

    Versions

    • 05.09.22: - Deprecate.
    • 30.11.21: - Added in jbig2enc.
    • 07.10.21: - Fixed variable that determins if we should run redis locally.
    • 01.10.21: - Replaced uwsgi with gunicorn due to websocket issues.
    • 24.07.21: - Fixed directory config files (sqlite db) is all stored.
    • 23.07.21: - Fixed initial user creation.
    • 10.07.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-paperless-ngx/index.html b/images/docker-paperless-ngx/index.html index c6cfc31cbf..8240e283fe 100644 --- a/images/docker-paperless-ngx/index.html +++ b/images/docker-paperless-ngx/index.html @@ -1,4 +1,4 @@ - paperless-ngx - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    linuxserver/paperless-ngx

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + paperless-ngx - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    linuxserver/paperless-ngx

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       paperless-ngx:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /data Storage location for all paperless-ngx data files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it paperless-ngx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ngx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' paperless-ngx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/paperless-ngx:latest

    Versions

    • 05.09.22: - Deprecate.
    • 16.05.22: - Add correct libqpdf.so to arm builds.
    • 14.05.22: - Fine tune disabling of redis.
    • 12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql.
    • 12.05.22: - Utilize lsio wheel for pikepdf.
    • 11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn.
    • 05.05.22: - Add runtime dependencies libxslt1.1 for armhf
    • 30.04.22: - Add runtime dependencies lizbar and poppler-utils
    • 27.04.22: - Add build-dependencies for arm32 builds.
    • 11.04.22: - Replaced uwsgi with gunicorn due to websocket issues.
    • 11.03.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it paperless-ngx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ngx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' paperless-ngx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/paperless-ngx:latest

    Versions

    • 05.09.22: - Deprecate.
    • 16.05.22: - Add correct libqpdf.so to arm builds.
    • 14.05.22: - Fine tune disabling of redis.
    • 12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql.
    • 12.05.22: - Utilize lsio wheel for pikepdf.
    • 11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn.
    • 05.05.22: - Add runtime dependencies libxslt1.1 for armhf
    • 30.04.22: - Add runtime dependencies lizbar and poppler-utils
    • 27.04.22: - Add build-dependencies for arm32 builds.
    • 11.04.22: - Replaced uwsgi with gunicorn due to websocket issues.
    • 11.03.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-papermerge/index.html b/images/docker-papermerge/index.html index fa688c37fa..640d0ad060 100644 --- a/images/docker-papermerge/index.html +++ b/images/docker-papermerge/index.html @@ -1,4 +1,4 @@ - papermerge - LinuxServer.io

    linuxserver/papermerge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge.

    If you need non-English OCR language support, you can use this mod.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + papermerge - LinuxServer.io       

    linuxserver/papermerge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge.

    If you need non-English OCR language support, you can use this mod.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       papermerge:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 http gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /data Storage location for all papermerge data files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it papermerge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f papermerge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' papermerge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/papermerge:latest

    Versions

    • 15.07.22: - Don't install development python packages
    • 13.04.21: - Handle upstream stapler change
    • 13.03.21: - Fixed mglib dependency per issue 32
    • 25.02.21: - Updated dependencies for v2
    • 07.02.21: - Support external MySQL/PSQL DBs.
    • 01.02.21: - Add redis.
    • 09.12.20: - Fix locales.
    • 08.08.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it papermerge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f papermerge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' papermerge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/papermerge:latest

    Versions

    • 15.07.22: - Don't install development python packages
    • 13.04.21: - Handle upstream stapler change
    • 13.03.21: - Fixed mglib dependency per issue 32
    • 25.02.21: - Updated dependencies for v2
    • 07.02.21: - Support external MySQL/PSQL DBs.
    • 01.02.21: - Add redis.
    • 09.12.20: - Fix locales.
    • 08.08.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-photoshow/index.html b/images/docker-photoshow/index.html index 461e419017..c9ea3bed9e 100644 --- a/images/docker-photoshow/index.html +++ b/images/docker-photoshow/index.html @@ -1,4 +1,4 @@ - photoshow - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/photoshow

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Photoshow is gallery software at its easiest, it doesn't even require a database.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + photoshow - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/photoshow

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Photoshow is gallery software at its easiest, it doesn't even require a database.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       photoshow:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Stores config and logs for nginx base.
    /Pictures:ro Your local folder of photos you wish to share.
    /Thumbs Local folder to store thumbnails of your images.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it photoshow /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f photoshow
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' photoshow
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/photoshow:latest

    Versions

    • 14.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.09.19: - Adding PHP-Exif for image metadata and processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 05.09.18: - Rebase to alpine 3.8.
    • 07.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 14.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 11.09.16: - Add layer badges to README.
    • 21.08.15: - Use patched keybaord js from fork of photoshow.
    • 21.08.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it photoshow /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f photoshow
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' photoshow
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/photoshow:latest

    Versions

    • 14.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.09.19: - Adding PHP-Exif for image metadata and processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 05.09.18: - Rebase to alpine 3.8.
    • 07.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 14.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 11.09.16: - Add layer badges to README.
    • 21.08.15: - Use patched keybaord js from fork of photoshow.
    • 21.08.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-phpmyadmin/index.html b/images/docker-phpmyadmin/index.html index 5feb71aa66..3cc2598c4a 100644 --- a/images/docker-phpmyadmin/index.html +++ b/images/docker-phpmyadmin/index.html @@ -1,4 +1,4 @@ - phpmyadmin - LinuxServer.io

    linuxserver/phpmyadmin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.

    We support all of the official environment variables for configuration as well as directly editing the config files.

    For more information check out the phpmyadmin documentation.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + phpmyadmin - LinuxServer.io       

    linuxserver/phpmyadmin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.

    We support all of the official environment variables for configuration as well as directly editing the config files.

    For more information check out the phpmyadmin documentation.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       phpmyadmin:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Port for web frontend

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York
    PMA_ARBITRARY=1 Set to 1 to allow you to connect to any server. Setting to 0 will only allow you to connect to specified hosts (See Application Setup)
    PMA_ABSOLUTE_URI=https://phpmyadmin.example.com Set the URL you will use to access the web frontend

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it phpmyadmin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f phpmyadmin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' phpmyadmin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/phpmyadmin:latest

    Versions

    • 18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.22: - Pin versions to 5.x.x.
    • 14.06.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it phpmyadmin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f phpmyadmin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' phpmyadmin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/phpmyadmin:latest

    Versions

    • 18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.22: - Pin versions to 5.x.x.
    • 14.06.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-pidgin/index.html b/images/docker-pidgin/index.html index c3809e9fab..b4825b5206 100644 --- a/images/docker-pidgin/index.html +++ b/images/docker-pidgin/index.html @@ -1,4 +1,4 @@ - pidgin - LinuxServer.io

    linuxserver/pidgin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pidgin - LinuxServer.io       

    linuxserver/pidgin

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pidgin:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Pidgin desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores local files and settings

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pidgin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pidgin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pidgin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pidgin:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.02.22: - Add build deps for discord.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 14.05.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pidgin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pidgin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pidgin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pidgin:latest

    Versions

    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.02.22: - Add build deps for discord.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 14.05.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-piwigo/index.html b/images/docker-piwigo/index.html index ded1100e1b..7871c0e100 100644 --- a/images/docker-piwigo/index.html +++ b/images/docker-piwigo/index.html @@ -1,4 +1,4 @@ - piwigo - LinuxServer.io

    linuxserver/piwigo

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • You must create a user and database for piwigo to use in a mysql/mariadb server.

    • Self-signed keys are generated the first time you run the container and can be found in /config/keys, if needed, you can replace them with your own.

    • The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc."

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + piwigo - LinuxServer.io       

    linuxserver/piwigo

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • You must create a user and database for piwigo to use in a mysql/mariadb server.

    • Self-signed keys are generated the first time you run the container and can be found in /config/keys, if needed, you can replace them with your own.

    • The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc."

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       piwigo:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /gallery Image storage for Piwigo

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it piwigo /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f piwigo
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' piwigo
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/piwigo:latest

    Versions

    • 08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 29.06.21: - Rebase to 3.14, Add php7-zip package
    • 20.05.21: - Create separate volume for image data
    • 23.01.21: - Rebasing to alpine 3.13.
    • 12.12.20: - Increased upload_max_filesize in php.ini
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.06.19: - Add ffmpeg and other deps as needed by popular plugins.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.03.19: - Add php-ctype & php-curl.
    • 22.02.19: - Rebasing to alpine 3.9, add php-ldap.
    • 28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch.
    • 25.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 20.04.17: - Add php7-exif package, thanks iiska
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 29.08.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it piwigo /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f piwigo
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' piwigo
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/piwigo:latest

    Versions

    • 08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 29.06.21: - Rebase to 3.14, Add php7-zip package
    • 20.05.21: - Create separate volume for image data
    • 23.01.21: - Rebasing to alpine 3.13.
    • 12.12.20: - Increased upload_max_filesize in php.ini
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.06.19: - Add ffmpeg and other deps as needed by popular plugins.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.03.19: - Add php-ctype & php-curl.
    • 22.02.19: - Rebasing to alpine 3.9, add php-ldap.
    • 28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch.
    • 25.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 20.04.17: - Add php7-exif package, thanks iiska
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 29.08.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-pixapop/index.html b/images/docker-pixapop/index.html index 03e447d1df..88aee70858 100644 --- a/images/docker-pixapop/index.html +++ b/images/docker-pixapop/index.html @@ -1,4 +1,4 @@ - pixapop - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/pixapop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pixapop is an open-source single page application to view your photos in the easiest way possible.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pixapop - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/pixapop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pixapop is an open-source single page application to view your photos in the easiest way possible.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pixapop:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    APP_USERNAME=admin Specify a username to enable authentication.
    APP_PASSWORD=admin Specify a password to enable authentication.

    Volume Mappings (-v)

    Volume Function
    /config Stores config and logs for nginx base.
    /photos Your local folder of photos.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pixapop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pixapop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pixapop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pixapop:latest

    Versions

    • 14.10.22 - Deprecate image.
    • 17.12.20 - Move image to main linuxserver repo, add notice to container log
    • 18.03.19 - Update build dependencies
    • 18.03.19 - Add build dependencies
    • 17.03.19 - Initial release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pixapop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pixapop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pixapop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pixapop:latest

    Versions

    • 14.10.22 - Deprecate image.
    • 17.12.20 - Move image to main linuxserver repo, add notice to container log
    • 18.03.19 - Update build dependencies
    • 18.03.19 - Add build dependencies
    • 17.03.19 - Initial release
    \ No newline at end of file diff --git a/images/docker-plex-meta-manager/index.html b/images/docker-plex-meta-manager/index.html index f6dab9d5f4..4830bda96a 100644 --- a/images/docker-plex-meta-manager/index.html +++ b/images/docker-plex-meta-manager/index.html @@ -1,4 +1,4 @@ - plex-meta-manager - LinuxServer.io

    linuxserver/plex-meta-manager

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    develop Latest commits from the develop branch

    Application Setup

    There is a walkthrough available to help get you up and running.

    This image supports all of the environment variables listed here and all commandline arguments.

    To perform a one-time run use docker run (or docker-compose run) with the --rm and -e PMM_RUN=True arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion.

    For more information see the official wiki.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + plex-meta-manager - LinuxServer.io       

    linuxserver/plex-meta-manager

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    develop Latest commits from the develop branch

    Application Setup

    There is a walkthrough available to help get you up and running.

    This image supports all of the environment variables listed here and all commandline arguments.

    To perform a one-time run use docker run (or docker-compose run) with the --rm and -e PMM_RUN=True arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion.

    For more information see the official wiki.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       plex-meta-manager:
    @@ -32,4 +32,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    PMM_CONFIG=/config/config.yml Specify a custom config file to use.
    PMM_TIME=03:00 Comma-separated list of times to update each day. Format: HH:MM.
    PMM_RUN=False Set to True to run without the scheduler.
    PMM_TEST=False Set to True to run in debug mode with only collections that have test: true.
    PMM_NO_MISSING=False Set to True to run without any of the missing movie/show functions.

    Volume Mappings (-v)

    Volume Function
    /config Local path for plex-meta-manager config files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it plex-meta-manager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex-meta-manager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' plex-meta-manager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/plex-meta-manager:latest

    Versions

    • 11.12.22: - Rebase master to Alpine 3.17.
    • 08.11.22: - Add develop branch.
    • 25.10.22: - Support commandline args and relative paths.
    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 30.01.22: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it plex-meta-manager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex-meta-manager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' plex-meta-manager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/plex-meta-manager:latest

    Versions

    • 11.12.22: - Rebase master to Alpine 3.17.
    • 08.11.22: - Add develop branch.
    • 25.10.22: - Support commandline args and relative paths.
    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 30.01.22: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-plex/index.html b/images/docker-plex/index.html index 3fb55b1656..6817dc502d 100644 --- a/images/docker-plex/index.html +++ b/images/docker-plex/index.html @@ -1,4 +1,4 @@ - plex - LinuxServer.io

    linuxserver/plex

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases with Focal baseimage
    bionic DEPRECATED - Stable releases with Bionic baseimage

    Application Setup

    Webui can be found at <your-ip>:32400/web

    ** Note about updates, if there is no value set for the VERSION variable, then no updates will take place.**

    ** For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui**

    Valid settings for VERSION are:-

    IMPORTANT NOTE:- YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT

    • docker: Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command.
    • latest: will update plex to the latest version available that you are entitled to.
    • public: will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates.
    • <specific-version>: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.

    Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri
    + plex - LinuxServer.io       

    linuxserver/plex

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases with Focal baseimage
    bionic DEPRECATED - Stable releases with Bionic baseimage

    Application Setup

    Webui can be found at <your-ip>:32400/web

    ** Note about updates, if there is no value set for the VERSION variable, then no updates will take place.**

    ** For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui**

    Valid settings for VERSION are:-

    IMPORTANT NOTE:- YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT

    • docker: Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command.
    • latest: will update plex to the latest version available that you are entitled to.
    • public: will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates.
    • <specific-version>: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.

    Hardware Acceleration

    Intel

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri
     

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the plex docker.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -41,4 +41,4 @@
       -p 32469:32469
     

    The application accepts a series of environment variables to further customize itself on boot:

    Parameter Function
    --device=/dev/dri:/dev/dri Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section.
    --device=/dev/dvb:/dev/dvb Add this option to your run command if you plan on using dvb devices.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it plex /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' plex
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/plex:latest

    Versions

    • 16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex).
    • 18.07.22: - Pin all opencl related driver packages.
    • 16.05.22: - Pin opencl version.
    • 04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw.
    • 25.12.21: - Install Intel drivers from the official repo.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu.
    • 23.11.20: - Add Bionic branch make Focal default.
    • 03.05.20: - Update exposed ports and example docs for bridge mode.
    • 23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start.
    • 04.12.19: - Add variable for setting PLEX_CLAIM. Remove /transcode volume mapping as it is now set via plex gui and defaults to a location under /config.
    • 06.08.19: - Add variable for setting UMASK.
    • 10.07.19: - Fix permissions for tuner (/dev/dvb) devices.
    • 20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Fix update logic for VERSION=public.
    • 14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64.
    • 15.02.19: - Clean up plex pid after unclean stop.
    • 11.02.19: - Fix nvidia variables, add device variables.
    • 16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service.
    • 07.09.18: - Rebase to ubuntu bionic, add udev package.
    • 09.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add unrar package as per requests, for subzero plugin.
    • 11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library
    • 03.01.17: - Use case insensitive version variable matching rather than export and make lowercase.
    • 17.10.16: - Allow use of uppercase version variable
    • 01.10.16: - Add TZ info to README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 22.08.16: - Rebased to xenial and s6 overlay
    • 07.04.16: - removed /transcode volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS
    • 24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes.
    • 17.09.15: - Changed to run chmod only once
    • 19.09.15: - Plex updated their download servers from http to https
    • 28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix.
    • 18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42.
    • 09.07.15: - Now with ability to pick static version number.
    • 08.07.15: - Now with autoupdates. (Hosted by fanart.tv)
    • 03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it plex /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' plex
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/plex:latest

    Versions

    • 16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex).
    • 18.07.22: - Pin all opencl related driver packages.
    • 16.05.22: - Pin opencl version.
    • 04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw.
    • 25.12.21: - Install Intel drivers from the official repo.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu.
    • 23.11.20: - Add Bionic branch make Focal default.
    • 03.05.20: - Update exposed ports and example docs for bridge mode.
    • 23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start.
    • 04.12.19: - Add variable for setting PLEX_CLAIM. Remove /transcode volume mapping as it is now set via plex gui and defaults to a location under /config.
    • 06.08.19: - Add variable for setting UMASK.
    • 10.07.19: - Fix permissions for tuner (/dev/dvb) devices.
    • 20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Fix update logic for VERSION=public.
    • 14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64.
    • 15.02.19: - Clean up plex pid after unclean stop.
    • 11.02.19: - Fix nvidia variables, add device variables.
    • 16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service.
    • 07.09.18: - Rebase to ubuntu bionic, add udev package.
    • 09.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add unrar package as per requests, for subzero plugin.
    • 11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library
    • 03.01.17: - Use case insensitive version variable matching rather than export and make lowercase.
    • 17.10.16: - Allow use of uppercase version variable
    • 01.10.16: - Add TZ info to README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 22.08.16: - Rebased to xenial and s6 overlay
    • 07.04.16: - removed /transcode volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS
    • 24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes.
    • 17.09.15: - Changed to run chmod only once
    • 19.09.15: - Plex updated their download servers from http to https
    • 28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix.
    • 18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42.
    • 09.07.15: - Now with ability to pick static version number.
    • 08.07.15: - Now with autoupdates. (Hosted by fanart.tv)
    • 03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.
    \ No newline at end of file diff --git a/images/docker-projectsend/index.html b/images/docker-projectsend/index.html index 36b17ba4a4..570d492d50 100644 --- a/images/docker-projectsend/index.html +++ b/images/docker-projectsend/index.html @@ -1,4 +1,4 @@ - projectsend - LinuxServer.io

    linuxserver/projectsend

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27

    Requires a user and database in either mysql or mariadb.

    To use translations, follow the instructions here. The necessary paths are symlinked under /config/translations (note that the "templates" paths don't need lang subdirectories).

    More info at ProjectSend.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + projectsend - LinuxServer.io       

    linuxserver/projectsend

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27

    Requires a user and database in either mysql or mariadb.

    To use translations, follow the instructions here. The necessary paths are symlinked under /config/translations (note that the "templates" paths don't need lang subdirectories).

    More info at ProjectSend.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       projectsend:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    MAX_UPLOAD=5000 To set maximum upload size (in MB), default if unset is 5000.

    Volume Mappings (-v)

    Volume Function
    /config Where to store projectsend config files.
    /data Where to store files to share.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it projectsend /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f projectsend
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' projectsend
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/projectsend:latest

    Versions

    • 23.08.22: - Add translation support
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 24.06.21: - Rebasing to alpine 3.14, switch to nginx
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.17: - Fetch version from github.
    • 09.12.17: - Rebase to alpine 3.7.
    • 13.06.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it projectsend /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f projectsend
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' projectsend
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/projectsend:latest

    Versions

    • 23.08.22: - Add translation support
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 24.06.21: - Rebasing to alpine 3.14, switch to nginx
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.17: - Fetch version from github.
    • 09.12.17: - Rebase to alpine 3.7.
    • 13.06.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-prowlarr/index.html b/images/docker-prowlarr/index.html index dd006c8d47..12a7972442 100644 --- a/images/docker-prowlarr/index.html +++ b/images/docker-prowlarr/index.html @@ -1,4 +1,4 @@ - prowlarr - LinuxServer.io

    linuxserver/prowlarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Prowlarr stable releases
    develop Prowlarr releases from their develop branch
    nightly Prowlarr releases from their nightly branch

    Application Setup

    Access the webui at <your-ip>:9696, for more information check out Prowlarr.

    Setup info can be found here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + prowlarr - LinuxServer.io       

    linuxserver/prowlarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Prowlarr stable releases
    develop Prowlarr releases from their develop branch
    nightly Prowlarr releases from their nightly branch

    Application Setup

    Access the webui at <your-ip>:9696, for more information check out Prowlarr.

    Setup info can be found here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       prowlarr:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9696 The port for the Prowlarr webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Prowlarr

    Volume Mappings (-v)

    Volume Function
    /config Database and Prowlarr configs

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it prowlarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f prowlarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' prowlarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/prowlarr:latest

    Versions

    • 03.01.23: - Publish stable release.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 06.06.21: - Initial realease.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it prowlarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f prowlarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' prowlarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/prowlarr:latest

    Versions

    • 03.01.23: - Publish stable release.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 06.06.21: - Initial realease.
    \ No newline at end of file diff --git a/images/docker-pwndrop/index.html b/images/docker-pwndrop/index.html index 04269c482e..953c23e795 100644 --- a/images/docker-pwndrop/index.html +++ b/images/docker-pwndrop/index.html @@ -1,4 +1,4 @@ - pwndrop - LinuxServer.io

    linuxserver/pwndrop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the web gui at http://<your-ip>:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pwndrop - LinuxServer.io       

    linuxserver/pwndrop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the web gui at http://<your-ip>:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one).

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pwndrop:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SECRET_PATH=/pwndrop Secret path for admin access. Defaults to /pwndrop. This parameter only takes effect during initial install; it can later be changed in the web gui.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration and data.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pwndrop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pwndrop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pwndrop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pwndrop:latest

    Versions

    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.04.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pwndrop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pwndrop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pwndrop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pwndrop:latest

    Versions

    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.04.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-pydio-cells/index.html b/images/docker-pydio-cells/index.html index 6f5f139061..1ba996603a 100644 --- a/images/docker-pydio-cells/index.html +++ b/images/docker-pydio-cells/index.html @@ -1,4 +1,4 @@ - pydio-cells - LinuxServer.io

    linuxserver/pydio-cells

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended.

    Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pydio-cells - LinuxServer.io       

    linuxserver/pydio-cells

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended.

    Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pydio-cells:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Http port
    33060 gRPC port (required for CellsSync).

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    EXTERNALURL=yourdomain.url The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT).
    SERVER_IP=0.0.0.0 Enter the LAN IP of the docker server. Required for local access by IP, added to self signed cert as SAN (not required if accessing only through reverse proxy).

    Volume Mappings (-v)

    Volume Function
    /config All the config files reside here.

    Miscellaneous Options

    Parameter Function
    --hostname= Pydio Cells uses the hostname to verify local files. This setting is required and should not be changed after it has been set.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pydio-cells /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio-cells
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pydio-cells
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pydio-cells:latest

    Versions

    • 01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility.
    • 19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4.
    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add SERVER_IP var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync.
    • 17.04.20: - Update compile options, previous release was broken for new installs.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.12.19: - Initial Release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pydio-cells /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio-cells
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pydio-cells
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pydio-cells:latest

    Versions

    • 01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility.
    • 19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4.
    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add SERVER_IP var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync.
    • 17.04.20: - Update compile options, previous release was broken for new installs.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.12.19: - Initial Release
    \ No newline at end of file diff --git a/images/docker-pydio/index.html b/images/docker-pydio/index.html index 8d26bd8eb6..d91ce71aa3 100644 --- a/images/docker-pydio/index.html +++ b/images/docker-pydio/index.html @@ -1,4 +1,4 @@ - pydio - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/pydio

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + pydio - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/pydio

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       pydio:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    443 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where pydio should store it's configuration files.
    /data Where pydio should store uploaded files.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead.

    You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname...

    Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own.

    For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard.

    For email settings edit the file /config/ssmtp.conf and restart the container.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pydio /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pydio
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pydio

    Versions

    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8.
    • 12.01.18: - Rebase to alpine linux 3.7.
    • 28.10.17: - php7-ssh2 moved from testing to community repo.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 17.05.17: - Make default install pydio 8.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 28.02.17: - Modify sed for data path.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 08.09.15: - Initial Release.
    \ No newline at end of file +

    Application Setup

    THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead.

    You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname...

    Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own.

    For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard.

    For email settings edit the file /config/ssmtp.conf and restart the container.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pydio /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pydio
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pydio

    Versions

    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8.
    • 12.01.18: - Rebase to alpine linux 3.7.
    • 28.10.17: - php7-ssh2 moved from testing to community repo.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 17.05.17: - Make default install pydio 8.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 28.02.17: - Modify sed for data path.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 08.09.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-pyload-ng/index.html b/images/docker-pyload-ng/index.html index e034b81405..d71f8eff46 100644 --- a/images/docker-pyload-ng/index.html +++ b/images/docker-pyload-ng/index.html @@ -1,4 +1,4 @@ - pyload-ng - LinuxServer.io

    linuxserver/pyload-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from pyLoad Next
    develop Releases from pyload Next develop branch

    Application Setup

    Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload

    For general usage please see the pyLoad wiki here .

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pyload-ng - LinuxServer.io       

    linuxserver/pyload-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from pyLoad Next
    develop Releases from pyload Next develop branch

    Application Setup

    Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload

    For general usage please see the pyLoad wiki here .

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pyload-ng:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 Allows HTTP access to the application
    9666 Click'n'Load port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config pyLoad Configuration and files database
    /downloads Destination of pyLoad downloads

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pyload-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pyload-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pyload-ng:latest

    Versions

    • 02.02.22: - Rebase master to alpine 3.17.
    • 02.02.22: - Add ffmpeg for the Youtube plugin.
    • 24.01.22: - Replace unrar with p7zip.
    • 24.01.22: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pyload-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pyload-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pyload-ng:latest

    Versions

    • 02.02.22: - Rebase master to alpine 3.17.
    • 02.02.22: - Add ffmpeg for the Youtube plugin.
    • 24.01.22: - Replace unrar with p7zip.
    • 24.01.22: - Initial release.
    \ No newline at end of file diff --git a/images/docker-pyload/index.html b/images/docker-pyload/index.html index 6f689b880a..d9932fe523 100644 --- a/images/docker-pyload/index.html +++ b/images/docker-pyload/index.html @@ -1,4 +1,4 @@ - pyload - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/

    linuxserver/pyload

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable releases from Pyload
    ng Development releases from Pyload-ng (currently alpha)

    Application Setup

    Access the web interface at http://your-ip:8000 the default login is: username - admin password - password

    For the ng tag, the default user/pass are pyload/pyload.

    For general usage please see the pyLoad wiki here .

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pyload - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/

    linuxserver/pyload

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Version Tags

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description
    latest Stable releases from Pyload
    ng Development releases from Pyload-ng (currently alpha)

    Application Setup

    Access the web interface at http://your-ip:8000 the default login is: username - admin password - password

    For the ng tag, the default user/pass are pyload/pyload.

    For general usage please see the pyLoad wiki here .

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pyload:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8000 Allows HTTP access to the application
    7227 pyLoad control port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config pyLoad Configuration and files database
    /downloads Destination of pyLoad downloads

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pyload /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pyload
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pyload

    Versions

    • 25.01.22: - Deprecate.
    • 23.02.21: - Add Python plugin passlib.
    • 16.02.21: - Publish ng tag for pyload-ng (currently alpha).
    • 04.11.20: - Rebase to alpine 3.11.
    • 18.10.20: - Chown app folder to fix plugin updater.
    • 18.07.19: - Add ffmpeg for plugins the do video processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.06.19: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pyload /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pyload
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pyload

    Versions

    • 25.01.22: - Deprecate.
    • 23.02.21: - Add Python plugin passlib.
    • 16.02.21: - Publish ng tag for pyload-ng (currently alpha).
    • 04.11.20: - Rebase to alpine 3.11.
    • 18.10.20: - Chown app folder to fix plugin updater.
    • 18.07.19: - Add ffmpeg for plugins the do video processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.06.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-pylon/index.html b/images/docker-pylon/index.html index cb3ec95d29..08e9f64e65 100644 --- a/images/docker-pylon/index.html +++ b/images/docker-pylon/index.html @@ -1,4 +1,4 @@ - pylon - LinuxServer.io

    linuxserver/pylon

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://your-ip:3131, more information here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + pylon - LinuxServer.io       

    linuxserver/pylon

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://your-ip:3131, more information here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       pylon:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3131 The port for the Pylon web interface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    GITURL=https://github.com/linuxserver/docker-pylon.git Specify a git repo to checkout on first startup
    PYUSER=myuser Specify a basic auth user.
    PYPASS=mypass Specify a basic auth password.

    Volume Mappings (-v)

    Volume Function
    /code Optionally if you want the bind mount your own code and have changes survive container upgrades.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pylon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pylon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pylon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pylon:latest

    Versions

    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.09.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it pylon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pylon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' pylon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/pylon:latest

    Versions

    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.09.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-qbittorrent/index.html b/images/docker-qbittorrent/index.html index ffabf060d1..264a7f75c1 100644 --- a/images/docker-qbittorrent/index.html +++ b/images/docker-qbittorrent/index.html @@ -1,4 +1,4 @@ - qbittorrent - LinuxServer.io

    linuxserver/qbittorrent

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    The Qbittorrent project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable qbittorrent releases
    libtorrentv1 Static qbittorrent builds using libtorrent v1

    Application Setup

    The webui is at <your-ip>:8080 and the default username/password is admin/adminadmin.

    Change username/password via the webui in the webui section of settings.

    WEBUI_PORT variable

    Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.

    For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090

    This should alleviate the "white screen" issue.

    If you have no webui , check the file /config/qBittorrent/qBittorrent.conf

    edit or add the following lines

    WebUI\Address=*
    + qbittorrent - LinuxServer.io       

    linuxserver/qbittorrent

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    The Qbittorrent project aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable qbittorrent releases
    libtorrentv1 Static qbittorrent builds using libtorrent v1

    Application Setup

    The webui is at <your-ip>:8080 and the default username/password is admin/adminadmin.

    Change username/password via the webui in the webui section of settings.

    WEBUI_PORT variable

    Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.

    For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090

    This should alleviate the "white screen" issue.

    If you have no webui , check the file /config/qBittorrent/qBittorrent.conf

    edit or add the following lines

    WebUI\Address=*
     
     WebUI\ServerDomains=*
     

    If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    @@ -36,4 +36,4 @@ WebUI\ServerDomains=*
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 WebUI
    6881 tcp connection port
    6881/udp udp connection port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    WEBUI_PORT=8080 for changing the port of the webui, see below for explanation

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /downloads Location of downloads on disk.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it qbittorrent /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qbittorrent
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qbittorrent:latest

    Versions

    • 29.11.22: - Add openssl1.1-compat for qbittorrent-cli.
    • 31.10.22: - Add libtorrentv1 branch.
    • 31.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 25.05.22: - Fetch qbitorrent-cli from upstream repo.
    • 02.03.22: - Add unrar, 7zip, and qbitorrent-cli.
    • 01.03.22: - Add python for search plugin support.
    • 23.02.22: - Rebase to Alpine Edge, install from Alpine repos.
    • 19.02.22: - Add jq to build-stage
    • 07.01.22: - Rebase to Alpine, build from source.
    • 06.01.22: - Deprecate unstable branch.
    • 10.02.21: - Rebase to focal.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 12.11.20: - Stop creating /config/data directory on startup
    • 03.04.20: - Fix adding search engine plugin
    • 02.08.19: - Add qbitorrent-cli for processing scripts.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic.
    • 25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3.
    • 14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2.
    • 08.06.18: - Bump qbitorrent to 4.1.1.
    • 26.04.18: - Bump libtorrent to 1.1.7.
    • 02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 19.12.17: - Update to v4.0.3.
    • 09.02.17: - Rebase to alpine 3.7
    • 01.12.17: - Update to v4.0.2.
    • 27.11.17: - Update to v4 and use cpu_core routine to speed up builds.
    • 16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui.
    • 01.08.17: - Initial Release.
    • 12.02.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it qbittorrent /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qbittorrent
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' qbittorrent
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qbittorrent:latest

    Versions

    • 29.11.22: - Add openssl1.1-compat for qbittorrent-cli.
    • 31.10.22: - Add libtorrentv1 branch.
    • 31.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 25.05.22: - Fetch qbitorrent-cli from upstream repo.
    • 02.03.22: - Add unrar, 7zip, and qbitorrent-cli.
    • 01.03.22: - Add python for search plugin support.
    • 23.02.22: - Rebase to Alpine Edge, install from Alpine repos.
    • 19.02.22: - Add jq to build-stage
    • 07.01.22: - Rebase to Alpine, build from source.
    • 06.01.22: - Deprecate unstable branch.
    • 10.02.21: - Rebase to focal.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 12.11.20: - Stop creating /config/data directory on startup
    • 03.04.20: - Fix adding search engine plugin
    • 02.08.19: - Add qbitorrent-cli for processing scripts.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic.
    • 25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3.
    • 14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2.
    • 08.06.18: - Bump qbitorrent to 4.1.1.
    • 26.04.18: - Bump libtorrent to 1.1.7.
    • 02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 19.12.17: - Update to v4.0.3.
    • 09.02.17: - Rebase to alpine 3.7
    • 01.12.17: - Update to v4.0.2.
    • 27.11.17: - Update to v4 and use cpu_core routine to speed up builds.
    • 16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui.
    • 01.08.17: - Initial Release.
    • 12.02.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-qdirstat/index.html b/images/docker-qdirstat/index.html index 2555603113..5b64556322 100644 --- a/images/docker-qdirstat/index.html +++ b/images/docker-qdirstat/index.html @@ -1,4 +1,4 @@ - qdirstat - LinuxServer.io

    linuxserver/qdirstat

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + qdirstat - LinuxServer.io       

    linuxserver/qdirstat

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       qdirstat:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 QdirStat desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores qdirstat settings and scans.
    /data Data you want to analyze disk usage information of.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it qdirstat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qdirstat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' qdirstat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qdirstat:latest

    Versions

    • 16.12.22: - Rebase to Jammy.
    • 06.04.22: - Add xfce terminal.
    • 13.01.22: - Compile from source.
    • 11.01.22: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it qdirstat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qdirstat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' qdirstat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/qdirstat:latest

    Versions

    • 16.12.22: - Rebase to Jammy.
    • 06.04.22: - Add xfce terminal.
    • 13.01.22: - Compile from source.
    • 11.01.22: - Initial release.
    \ No newline at end of file diff --git a/images/docker-quassel-core/index.html b/images/docker-quassel-core/index.html index 53a8da568b..4a35b20eda 100644 --- a/images/docker-quassel-core/index.html +++ b/images/docker-quassel-core/index.html @@ -1,4 +1,4 @@ - quassel-core - LinuxServer.io

    linuxserver/quassel-core

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.

    This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Quassel wiki: quassel

    A great place to host a quassel instance is a VPS, such as DigitalOcean. For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim).

    Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your docker run command default: 4242. Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect.

    You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io. That's it, you're done.

    Stateless usage

    To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting.

    Env Usage
    DB_BACKEND SQLite or PostgreSQL
    DB_PGSQL_USERNAME PostgreSQL User
    DB_PGSQL_PASSWORD PostgreSQL Password
    DB_PGSQL_HOSTNAME PostgreSQL Host
    DB_PGSQL_PORT PostgreSQL Port
    AUTH_AUTHENTICATOR Database or LDAP
    AUTH_LDAP_HOSTNAME LDAP Host
    AUTH_LDAP_PORT LDAP Port
    AUTH_LDAP_BIND_DN LDAP Bind Domain
    AUTH_LDAP_BIND_PASSWORD LDAP Password
    AUTH_LDAP_FILTER LDAP Authentication Filters
    AUTH_LDAP_UID_ATTRIBUTE LDAP UID

    Additionally you have RUN_OPTS that can be used to customize pathing and behvior.

    Option Example
    --strict-ident strictly bool --strict-ident
    --ident-daemon strictly bool --ident-daemon
    --ident-port --ident-port "10113"
    --ident-listen --ident-listen "::,0.0.0.0"
    --ssl-cert --ssl-cert /config/keys/cert.crt
    --ssl-key --ssl-key /config/keys/cert.key
    --require-ssl strictly bool --require-ssl

    Minimal example with SQLite:

    docker create \
    + quassel-core - LinuxServer.io       

    linuxserver/quassel-core

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.

    This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Quassel wiki: quassel

    A great place to host a quassel instance is a VPS, such as DigitalOcean. For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim).

    Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your docker run command default: 4242. Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect.

    You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io. That's it, you're done.

    Stateless usage

    To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting.

    Env Usage
    DB_BACKEND SQLite or PostgreSQL
    DB_PGSQL_USERNAME PostgreSQL User
    DB_PGSQL_PASSWORD PostgreSQL Password
    DB_PGSQL_HOSTNAME PostgreSQL Host
    DB_PGSQL_PORT PostgreSQL Port
    AUTH_AUTHENTICATOR Database or LDAP
    AUTH_LDAP_HOSTNAME LDAP Host
    AUTH_LDAP_PORT LDAP Port
    AUTH_LDAP_BIND_DN LDAP Bind Domain
    AUTH_LDAP_BIND_PASSWORD LDAP Password
    AUTH_LDAP_FILTER LDAP Authentication Filters
    AUTH_LDAP_UID_ATTRIBUTE LDAP UID

    Additionally you have RUN_OPTS that can be used to customize pathing and behvior.

    Option Example
    --strict-ident strictly bool --strict-ident
    --ident-daemon strictly bool --ident-daemon
    --ident-port --ident-port "10113"
    --ident-listen --ident-listen "::,0.0.0.0"
    --ssl-cert --ssl-cert /config/keys/cert.crt
    --ssl-key --ssl-key /config/keys/cert.key
    --require-ssl strictly bool --require-ssl

    Minimal example with SQLite:

    docker create \
       --name=quassel-core \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -41,4 +41,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4242 The port quassel-core listens for connections on.
    10113 Optional Ident Port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    RUN_OPTS=--config-from-environment Custom CLI options for Quassel

    Volume Mappings (-v)

    Volume Function
    /config Database and quassel-core configuration storage.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it quassel-core /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-core
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' quassel-core
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/quassel-core:latest

    Versions

    • 03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14.
    • 07.08.21: - Fixing incorrect database password variable operator.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.03.19: - Make stateless operation an option, with input from one of the quassel team.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel0.13.0 See here..
    • 30.07.18: - Rebase to alpine:3.8 and use buildstage.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 09.12.17: - Rebase to alpine:3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 27.05.17: - Rebase to alpine:3.6.
    • 13.05.17: - Switch to git source.
    • 28.12.16: - Rebase to alpine:3.5.
    • 23.11.16: - Rebase to alpine:edge.
    • 23.09.16: - Use QT5 dependencies (thanks bauerj).
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 10.08.16: - Rebase to xenial.
    • 14.10.15: - Removed the webui, turned out to be to unstable for most usecases.
    • 01.09.15: - Fixed mistake in README.
    • 30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface.
    • 06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it quassel-core /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-core
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' quassel-core
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/quassel-core:latest

    Versions

    • 03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14.
    • 07.08.21: - Fixing incorrect database password variable operator.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.03.19: - Make stateless operation an option, with input from one of the quassel team.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel0.13.0 See here..
    • 30.07.18: - Rebase to alpine:3.8 and use buildstage.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 09.12.17: - Rebase to alpine:3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 27.05.17: - Rebase to alpine:3.6.
    • 13.05.17: - Switch to git source.
    • 28.12.16: - Rebase to alpine:3.5.
    • 23.11.16: - Rebase to alpine:edge.
    • 23.09.16: - Use QT5 dependencies (thanks bauerj).
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 10.08.16: - Rebase to xenial.
    • 14.10.15: - Removed the webui, turned out to be to unstable for most usecases.
    • 01.09.15: - Fixed mistake in README.
    • 30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface.
    • 06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.
    \ No newline at end of file diff --git a/images/docker-quassel-web/index.html b/images/docker-quassel-web/index.html index 2a41e03e37..23ecf19a4f 100644 --- a/images/docker-quassel-web/index.html +++ b/images/docker-quassel-web/index.html @@ -1,4 +1,4 @@ - quassel-web - LinuxServer.io

    linuxserver/quassel-web

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    By default this container webui will be available on https://$SERVER_IP:64443. To setup this container you can either use the envrionment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at:

    /config/settings-user.js
    + quassel-web - LinuxServer.io       

    linuxserver/quassel-web

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    By default this container webui will be available on https://$SERVER_IP:64443. To setup this container you can either use the envrionment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at:

    /config/settings-user.js
     

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
    @@ -30,4 +30,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    64443 Quassel-web https webui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    QUASSEL_CORE=192.168.1.10 specify the URL or IP address of your Quassel Core instance
    QUASSEL_PORT=4242 specify the port of your Quassel Core instance
    URL_BASE=/quassel Specify a url-base in reverse proxy setups ie. /quassel

    Volume Mappings (-v)

    Volume Function
    /config this will store config on the docker host

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it quassel-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' quassel-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/quassel-web:latest

    Versions

    • 12.02.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Reconfigure environmental variable setup.
    • 28.04.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it quassel-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' quassel-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/quassel-web:latest

    Versions

    • 12.02.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Reconfigure environmental variable setup.
    • 28.04.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-radarr/index.html b/images/docker-radarr/index.html index 01d1841eab..0fdf1be520 100644 --- a/images/docker-radarr/index.html +++ b/images/docker-radarr/index.html @@ -1,4 +1,4 @@ - radarr - LinuxServer.io

    linuxserver/radarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Radarr - A fork of Sonarr to work with movies à la Couchpotato.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Radarr releases
    develop Radarr releases from their develop branch
    nightly Radarr releases from their nightly branch

    Application Setup

    Access the webui at <your-ip>:7878, for more information check out Radarr.

    Media folders

    We have set /movies and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + radarr - LinuxServer.io       

    linuxserver/radarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Radarr - A fork of Sonarr to work with movies à la Couchpotato.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Radarr releases
    develop Radarr releases from their develop branch
    nightly Radarr releases from their nightly branch

    Application Setup

    Access the webui at <your-ip>:7878, for more information check out Radarr.

    Media folders

    We have set /movies and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       radarr:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    7878 The port for the Radarr webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Radarr

    Volume Mappings (-v)

    Volume Function
    /config Database and Radarr configs
    /movies Location of Movie library on disk (See note in Application setup)
    /downloads Location of download managers output directory (See note in Application setup)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it radarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f radarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' radarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/radarr:latest

    Versions

    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch.
    • 27.12.21: - Add nightly-alpine branch.
    • 17.10.21: - Remove UMASK_SET.
    • 08.05.21: - Make the paths clearer to the user
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 11.30.20: - Publish develop tag.
    • 11.28.20: - Switch to v3 .NET CORE builds (no more mono, 5.14 tag is deprecated). Rebase to Focal (for issues on arm32v7, see here).
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 10.05.19: - Rebase to Bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 09.09.18: - Add pipeline build process.
    • 24.02.18: - Add nightly branch.
    • 06.02.18: - Radarr repo changed owner.
    • 15.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
    • 13.04.17: - Switch to official mono repository.
    • 10.01.17: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it radarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f radarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' radarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/radarr:latest

    Versions

    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch.
    • 27.12.21: - Add nightly-alpine branch.
    • 17.10.21: - Remove UMASK_SET.
    • 08.05.21: - Make the paths clearer to the user
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 11.30.20: - Publish develop tag.
    • 11.28.20: - Switch to v3 .NET CORE builds (no more mono, 5.14 tag is deprecated). Rebase to Focal (for issues on arm32v7, see here).
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 10.05.19: - Rebase to Bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 09.09.18: - Add pipeline build process.
    • 24.02.18: - Add nightly branch.
    • 06.02.18: - Radarr repo changed owner.
    • 15.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
    • 13.04.17: - Switch to official mono repository.
    • 10.01.17: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-raneto/index.html b/images/docker-raneto/index.html index a4c61fc173..3659b68899 100644 --- a/images/docker-raneto/index.html +++ b/images/docker-raneto/index.html @@ -1,4 +1,4 @@ - raneto - LinuxServer.io

    linuxserver/raneto

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://:3000

    The default username and password is admin/password

    This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application:

    • /config/config.default.js - Main configuration file to setup your user, site name, etc.
    • /config/content - All of your Markdown files go here more info.
    • /config/images - This folder will serve content on http://:3000/images/.png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + raneto - LinuxServer.io       

    linuxserver/raneto

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at http://:3000

    The default username and password is admin/password

    This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application:

    • /config/config.default.js - Main configuration file to setup your user, site name, etc.
    • /config/content - All of your Markdown files go here more info.
    • /config/images - This folder will serve content on http://:3000/images/.png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       raneto:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 The port for the Raneto web interface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Raneto config and Markdown files

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it raneto /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f raneto
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' raneto
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/raneto:latest

    Versions

    • 10.08.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.11.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 01.06.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it raneto /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f raneto
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' raneto
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/raneto:latest

    Versions

    • 10.08.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.11.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 01.06.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-rdesktop/index.html b/images/docker-rdesktop/index.html index 0fa802c551..1157acc39c 100644 --- a/images/docker-rdesktop/index.html +++ b/images/docker-rdesktop/index.html @@ -1,4 +1,4 @@ - rdesktop - LinuxServer.io

    linuxserver/rdesktop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rdesktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest XFCE Alpine
    ubuntu-xfce XFCE Ubuntu
    fedora-xfce XFCE Fedora
    arch-xfce XFCE Arch
    alpine-kde KDE Alpine
    ubuntu-kde KDE Ubuntu
    fedora-kde KDE Fedora
    arch-kde KDE Arch
    alpine-mate MATE Alpine
    ubuntu-mate MATE Ubuntu
    fedora-mate MATE Fedora
    arch-mate MATE Arch
    alpine-i3 i3 Alpine
    ubuntu-i3 i3 Ubuntu
    fedora-i3 i3 Fedora
    arch-i3 i3 Arch
    alpine-openbox Openbox Alpine
    ubuntu-openbox Openbox Ubuntu
    fedora-openbox Openbox Fedora
    arch-openbox Openbox Arch
    alpine-icewm IceWM Alpine
    ubuntu-icewm IceWM Ubuntu
    fedora-icewm IceWM Fedora
    arch-icewm IceWM Arch

    Application Setup

    The Default USERNAME and PASSWORD is: abc/abc

    Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

    You will need a Remote Desktop client to access this container Wikipedia List, by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389. The first thing you should do when you login to the container is to change the abc users password by issuing the passwd command.

    Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

    If you ever lose your password you can always reset it by execing into the container as root:

    docker exec -it rdesktop passwd abc
    + rdesktop - LinuxServer.io       

    linuxserver/rdesktop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rdesktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest XFCE Alpine
    ubuntu-xfce XFCE Ubuntu
    fedora-xfce XFCE Fedora
    arch-xfce XFCE Arch
    alpine-kde KDE Alpine
    ubuntu-kde KDE Ubuntu
    fedora-kde KDE Fedora
    arch-kde KDE Arch
    alpine-mate MATE Alpine
    ubuntu-mate MATE Ubuntu
    fedora-mate MATE Fedora
    arch-mate MATE Arch
    alpine-i3 i3 Alpine
    ubuntu-i3 i3 Ubuntu
    fedora-i3 i3 Fedora
    arch-i3 i3 Arch
    alpine-openbox Openbox Alpine
    ubuntu-openbox Openbox Ubuntu
    fedora-openbox Openbox Fedora
    arch-openbox Openbox Arch
    alpine-icewm IceWM Alpine
    ubuntu-icewm IceWM Ubuntu
    fedora-icewm IceWM Fedora
    arch-icewm IceWM Arch

    Application Setup

    The Default USERNAME and PASSWORD is: abc/abc

    Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

    You will need a Remote Desktop client to access this container Wikipedia List, by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389. The first thing you should do when you login to the container is to change the abc users password by issuing the passwd command.

    Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

    If you ever lose your password you can always reset it by execing into the container as root:

    docker exec -it rdesktop passwd abc
     
    By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.

    Hardware Acceleration (Ubuntu Container Only)

    Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.

    Intel/ATI/AMD

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri
     
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    Arm Devices

    Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -37,4 +37,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3389 RDP access port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container
    /config abc users home directory

    Device Mappings (--device)

    Parameter Function
    /dev/dri Add this for GL support (Linux hosts only)

    Miscellaneous Options

    Parameter Function
    --shm-size= We set this to 1 gig to prevent modern web browsers from crashing
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rdesktop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rdesktop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rdesktop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rdesktop:latest

    Versions

    • 27.10.22: - Rebase all Ubuntu images to Jammy 22.04.
    • 26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3.
    • 05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel.
    • 05.05.21: - Reduce default packages to their flavor specific basics.
    • 05.04.21: - Add Alpine flavor.
    • 06.04.20: - Start PulseAudio in images to support audio
    • 28.02.20: - Initial Releases
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rdesktop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rdesktop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rdesktop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rdesktop:latest

    Versions

    • 27.10.22: - Rebase all Ubuntu images to Jammy 22.04.
    • 26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3.
    • 05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel.
    • 05.05.21: - Reduce default packages to their flavor specific basics.
    • 05.04.21: - Add Alpine flavor.
    • 06.04.20: - Start PulseAudio in images to support audio
    • 28.02.20: - Initial Releases
    \ No newline at end of file diff --git a/images/docker-readarr/index.html b/images/docker-readarr/index.html index 259ea310cd..b728f3fd92 100644 --- a/images/docker-readarr/index.html +++ b/images/docker-readarr/index.html @@ -1,4 +1,4 @@ - readarr - LinuxServer.io

    linuxserver/readarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Readarr - Book Manager and Automation (Sonarr for Ebooks)

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/readarr:nightly should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest
    nightly Nightly Readarr releases

    Application Setup

    Access the webui at <your-ip>:8787, for more information check out Readarr.

    Media folders

    We have set /books and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + readarr - LinuxServer.io       

    linuxserver/readarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Readarr - Book Manager and Automation (Sonarr for Ebooks)

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/readarr:nightly should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest
    nightly Nightly Readarr releases

    Application Setup

    Access the webui at <your-ip>:8787, for more information check out Readarr.

    Media folders

    We have set /books and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       readarr:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8787 The port for the Readarr webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Readarr

    Volume Mappings (-v)

    Volume Function
    /config Database and Readarr configs
    /books Location of Book library on disk (See note in Application setup)
    /downloads Location of download managers output directory (See note in Application setup)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it readarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f readarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' readarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/readarr:nightly

    Versions

    • 21.01.22: - Remove chromaprint as it's no longer a required dependency.
    • 01.01.22: - Add chromaprint for audio fingerprinting.
    • 28.07.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it readarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f readarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' readarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/readarr:nightly

    Versions

    • 21.01.22: - Remove chromaprint as it's no longer a required dependency.
    • 01.01.22: - Add chromaprint for audio fingerprinting.
    • 28.07.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-readme-sync/index.html b/images/docker-readme-sync/index.html index 15d26dae9d..26f34b1f17 100644 --- a/images/docker-readme-sync/index.html +++ b/images/docker-readme-sync/index.html @@ -1,8 +1,8 @@ - readme-sync - LinuxServer.io

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    Forum Linuserver.io forum
    IRC freenode at #linuxserver.io more information at:- IRC
    Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast

    The LinuxServer.io team brings you another image release featuring :-

    • regular and timely application updates
    • easy user mappings
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • security updates

    lsiodev/readme-sync

    Docker PullsDocker StarsBuild Status

    Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.

     

    Usage

    docker run --rm=true \
    + readme-sync - LinuxServer.io       

    readme-sync

    linuxserver.io

    Contact information:-

    Type Address/Details
    Discord Discord
    Forum Linuserver.io forum
    IRC freenode at #linuxserver.io more information at:- IRC
    Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast

    The LinuxServer.io team brings you another image release featuring :-

    • regular and timely application updates
    • easy user mappings
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • security updates

    lsiodev/readme-sync

    Docker PullsDocker StarsBuild Status

    Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.

     

    Usage

    docker run --rm=true \
         -e DOCKERHUB_USERNAME=<USERNAME> \
         -e DOCKERHUB_PASSWORD=<PASSWORD> \
         -e GIT_REPOSITORY=<GITHUB REPO> \
         -e DOCKER_REPOSITORY=<DOCKERHUB REPO> \
         -e GIT_BRANCH=<GITHUB BRANCH> \
         lsiodev/readme-sync bash -c 'node sync'
    -

     

    Parameters

    The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.

    Parameter Function
    -e DOCKERHUB_USERNAME your dockerhub username
    -e DOCKERHUB_PASSWORD your dockerhub password
    -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync
    -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync
    -e GIT_BRANCH github repository branch, optional (default: master)

      It is based on alpine and is not meant to run as a service. The sync is performed and the command exits.  

    Versions

    Date Changes
    13.01.21 Use ghcr baseimages. Fall back to external folder for readme lite.
    28.07.20 Rebase to alpine 3.12.
    20.08.18 Rebase to alpine 3.8.
    28.02.18 convert repo to use node.js implementation.
    17.11.17 add github branch support.
    16.10.16 merge ruby app.
    11.10.16 Initial development release.
    \ No newline at end of file +

     

    Parameters

    The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.

    Parameter Function
    -e DOCKERHUB_USERNAME your dockerhub username
    -e DOCKERHUB_PASSWORD your dockerhub password
    -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync
    -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync
    -e GIT_BRANCH github repository branch, optional (default: master)

      It is based on alpine and is not meant to run as a service. The sync is performed and the command exits.  

    Versions

    Date Changes
    13.01.21 Use ghcr baseimages. Fall back to external folder for readme lite.
    28.07.20 Rebase to alpine 3.12.
    20.08.18 Rebase to alpine 3.8.
    28.02.18 convert repo to use node.js implementation.
    17.11.17 add github branch support.
    16.10.16 merge ruby app.
    11.10.16 Initial development release.
    \ No newline at end of file diff --git a/images/docker-remmina/index.html b/images/docker-remmina/index.html index 5569618072..55a044c08b 100644 --- a/images/docker-remmina/index.html +++ b/images/docker-remmina/index.html @@ -1,4 +1,4 @@ - remmina - LinuxServer.io

    linuxserver/remmina

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/remmina:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + remmina - LinuxServer.io       

    linuxserver/remmina

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/remmina:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       remmina:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Remmina desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it remmina /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f remmina
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' remmina
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/remmina:latest

    Versions

    • 16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins.
    • 19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages.
    • 27.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it remmina /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f remmina
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' remmina
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/remmina:latest

    Versions

    • 16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins.
    • 19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages.
    • 27.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-requestrr/index.html b/images/docker-requestrr/index.html index ef358b3fc5..d14a278d80 100644 --- a/images/docker-requestrr/index.html +++ b/images/docker-requestrr/index.html @@ -1,4 +1,4 @@ - requestrr - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.

    linuxserver/requestrr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:4545, for more information check out Requestrr.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + requestrr - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.

    linuxserver/requestrr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:4545, for more information check out Requestrr.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       requestrr:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    4545 web gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it requestrr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f requestrr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' requestrr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/requestrr:latest

    Versions

    • 20.12.21: - Deprecate.
    • 27.09.21: - Allow app to write to tmp folder.
    • 21.02.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it requestrr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f requestrr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' requestrr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/requestrr:latest

    Versions

    • 20.12.21: - Deprecate.
    • 27.09.21: - Allow app to write to tmp folder.
    • 21.02.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-resilio-sync/index.html b/images/docker-resilio-sync/index.html index 956d182be6..1ae6abdf0b 100644 --- a/images/docker-resilio-sync/index.html +++ b/images/docker-resilio-sync/index.html @@ -1,4 +1,4 @@ - resilio-sync - LinuxServer.io

    linuxserver/resilio-sync

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/resilio-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Webui is at <your-ip>:8888, for account creation and configuration.
    • More info on setup at Resilio Sync

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + resilio-sync - LinuxServer.io       

    linuxserver/resilio-sync

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/resilio-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Webui is at <your-ip>:8888, for account creation and configuration.
    • More info on setup at Resilio Sync

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       resilio-sync:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8888 WebUI
    55555 Sync Port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where resilio-sync should store its config file.
    /downloads Folder for downloads/cache.
    /sync Sync folders root.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it resilio-sync /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f resilio-sync
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' resilio-sync
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/resilio-sync:latest

    Versions

    • 14.12.22: - Rebase to Jammy, migrate to s6v3.
    • 03.10.21: - Use upstream apt repo to install. Rebase to focal.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Rebase to bionic, add pipeline logic and multi arch.
    • 05.02.18: - Add downloads volume mount.
    • 28.01.18: - Add /sync to dir whitelist.
    • 26.01.18: - Use variable for arch to bring in line with armhf arch repo.
    • 15.12.17: - Fix continuation lines.
    • 02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio.
    • 22.05.17: - Add variable for user defined umask.
    • 14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine).
    • 08.02.17: - Rebase to alpine 3.5.
    • 02.11.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it resilio-sync /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f resilio-sync
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' resilio-sync
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/resilio-sync:latest

    Versions

    • 14.12.22: - Rebase to Jammy, migrate to s6v3.
    • 03.10.21: - Use upstream apt repo to install. Rebase to focal.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Rebase to bionic, add pipeline logic and multi arch.
    • 05.02.18: - Add downloads volume mount.
    • 28.01.18: - Add /sync to dir whitelist.
    • 26.01.18: - Use variable for arch to bring in line with armhf arch repo.
    • 15.12.17: - Fix continuation lines.
    • 02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio.
    • 22.05.17: - Add variable for user defined umask.
    • 14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine).
    • 08.02.17: - Rebase to alpine 3.5.
    • 02.11.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-rsnapshot/index.html b/images/docker-rsnapshot/index.html index 4c777e5f6b..202f664f47 100644 --- a/images/docker-rsnapshot/index.html +++ b/images/docker-rsnapshot/index.html @@ -1,4 +1,4 @@ - rsnapshot - LinuxServer.io

    linuxserver/rsnapshot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rsnapshot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT NOTES:

    After starting the container you will need to edit /config/rsnapshot.conf.

    SNAPSHOT ROOT DIRECTORY

    rsnapshot is configured to backup data to the /.snapshots volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

    BACKUP LEVELS / INTERVALS

    rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.

    BACKUP POINTS

    rsnapshot is configured to backup data from the /data volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

    cron

    You will then need to edit /config/crontabs/root to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + rsnapshot - LinuxServer.io       

    linuxserver/rsnapshot

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required."

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rsnapshot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT NOTES:

    After starting the container you will need to edit /config/rsnapshot.conf.

    SNAPSHOT ROOT DIRECTORY

    rsnapshot is configured to backup data to the /.snapshots volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

    BACKUP LEVELS / INTERVALS

    rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.

    BACKUP POINTS

    rsnapshot is configured to backup data from the /data volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

    cron

    You will then need to edit /config/crontabs/root to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       rsnapshot:
    @@ -26,4 +26,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=America/New_York Specify a timezone to use EG America/New_York

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /.snapshots Storage location for all snapshots.
    /data Storage location for data to be backed up.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rsnapshot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rsnapshot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rsnapshot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rsnapshot:latest

    Versions

    • 15.12.22: - Rebase to alpine 3.17.
    • 11.10.22: - Rebase to alpine 3.16, migrate to s6v3.
    • 10.10.21: - Rebase to alpine 3.14.
    • 20.08.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rsnapshot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rsnapshot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rsnapshot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rsnapshot:latest

    Versions

    • 15.12.22: - Rebase to alpine 3.17.
    • 11.10.22: - Rebase to alpine 3.16, migrate to s6v3.
    • 10.10.21: - Rebase to alpine 3.14.
    • 20.08.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-rutorrent/index.html b/images/docker-rutorrent/index.html index baadb76db0..995095998c 100644 --- a/images/docker-rutorrent/index.html +++ b/images/docker-rutorrent/index.html @@ -1,4 +1,4 @@ - rutorrent - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/rutorrent

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rutorrent is a popular rtorrent client with a webui for ease of use.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
    + rutorrent - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated.

    linuxserver/rutorrent

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Rutorrent is a popular rtorrent client with a webui for ease of use.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    Compatible with docker-compose v2 schemas.

    ---
     version: "2.1"
     services:
       rutorrent:
    @@ -35,4 +35,4 @@
     protocol.pex.set = no
     

    If after updating you see an error about connecting to rtorrent in the webui, remove or comment out these lines in /config/rtorrent/rtorrent.rc ,whatever value is set, yes or no. Just setting them to no will still cause the error..

    trackers.use_udp.set = yes
     protocol.pex.set = no
    -
    To add plugins, create a plugins folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rutorrent /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rutorrent
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rutorrent
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rutorrent

    Versions

    • 25.03.22: - Deprecated. Please migrate to crazy-max's image.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 29.02.20: - Update readme for pex/dht.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 20.05.19: - Shift to building from official releases instead of commits.
    • 13.05.19: - Add libffi and openssl.
    • 07.05.19: - Add cloudscraper pip package.
    • 11.04.19: - Fix warnings in webui by adding python3, procps and pip packages.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 03.11.18: - Add pipeline and multi arch logic to repo.
    • 27.08.18: - Add bind tools package.
    • 22.08.18: - Rebase to alpine 3.8.
    • 08.12.17: - Rebase to alpine 3.7, add sox package.
    • 28.10.17: - Mediainfo moved from testing to community repo.
    • 09.10.17: - Use repo version of mediainfo to shorten build time.
    • 28.05.17: - Fix permissions on secondary temp folder of nginx.
    • 26.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Fix log permissions.
    • 18.03.17: - Note in readme about disabling dht in some circumstances.
    • 24.02.17: - Patch a source file to quash rss https bug.
    • 29.01.17: - Rebase to alpine 3.5.
    • 20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90.
    • 14.10.16: - Add version layer information.
    • 04.10.16: - Remove redundant sessions folder.
    • 30.09.16: - Fix umask.
    • 21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README, bump mediainfo version to 0.7.87.
    • 07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php.
    • 26.07.16: - Rebase to alpine.
    • 08.03.16: - Initial Release.
    \ No newline at end of file +
    To add plugins, create a plugins folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it rutorrent /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f rutorrent
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' rutorrent
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/rutorrent

    Versions

    • 25.03.22: - Deprecated. Please migrate to crazy-max's image.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 29.02.20: - Update readme for pex/dht.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 20.05.19: - Shift to building from official releases instead of commits.
    • 13.05.19: - Add libffi and openssl.
    • 07.05.19: - Add cloudscraper pip package.
    • 11.04.19: - Fix warnings in webui by adding python3, procps and pip packages.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 03.11.18: - Add pipeline and multi arch logic to repo.
    • 27.08.18: - Add bind tools package.
    • 22.08.18: - Rebase to alpine 3.8.
    • 08.12.17: - Rebase to alpine 3.7, add sox package.
    • 28.10.17: - Mediainfo moved from testing to community repo.
    • 09.10.17: - Use repo version of mediainfo to shorten build time.
    • 28.05.17: - Fix permissions on secondary temp folder of nginx.
    • 26.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Fix log permissions.
    • 18.03.17: - Note in readme about disabling dht in some circumstances.
    • 24.02.17: - Patch a source file to quash rss https bug.
    • 29.01.17: - Rebase to alpine 3.5.
    • 20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90.
    • 14.10.16: - Add version layer information.
    • 04.10.16: - Remove redundant sessions folder.
    • 30.09.16: - Fix umask.
    • 21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README, bump mediainfo version to 0.7.87.
    • 07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php.
    • 26.07.16: - Rebase to alpine.
    • 08.03.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-sabnzbd/index.html b/images/docker-sabnzbd/index.html index f01149e2b4..11ecbd49ea 100644 --- a/images/docker-sabnzbd/index.html +++ b/images/docker-sabnzbd/index.html @@ -1,4 +1,4 @@ - sabnzbd - LinuxServer.io

    linuxserver/sabnzbd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sabnzbd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable SABnzbd releases
    unstable Pre-releases from the develop branch
    nightly Latest commits from the develop branch

    Application Setup

    Initial setup is done from the http port.

    See the SABnzbd wiki for more information.

    nzb-notify

    nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.

    Download folders

    In Sabnzbd gui settings, under Folders, make sure to set the Completed Download Folder as /downloads and the Temporary Download Folder as /incomplete-downloads

    We have set /incomplete-downloads and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + sabnzbd - LinuxServer.io       

    linuxserver/sabnzbd

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sabnzbd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable SABnzbd releases
    unstable Pre-releases from the develop branch
    nightly Latest commits from the develop branch

    Application Setup

    Initial setup is done from the http port.

    See the SABnzbd wiki for more information.

    nzb-notify

    nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.

    Download folders

    In Sabnzbd gui settings, under Folders, make sure to set the Completed Download Folder as /downloads and the Temporary Download Folder as /incomplete-downloads

    We have set /incomplete-downloads and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       sabnzbd:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 HTTP port for the WebUI.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Local path for sabnzbd config files.
    /downloads Local path for finished downloads.
    /incomplete-downloads Local path for incomplete-downloads.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sabnzbd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sabnzbd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sabnzbd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sabnzbd:latest

    Versions

    • 03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 31.07.22: - Add nightly tag.
    • 10.03.22: - Add nzb-notify.
    • 22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch.
    • 25.01.22: - Rebase Unstable branch to Alpine.
    • 13.01.22: - Add alpine branch
    • 08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080
    • 24.07.21: - Add python3-setuptools.
    • 14.05.21: - Use linuxserver.io wheel index for pip packages.
    • 12.02.21: - Clean up rust/cargo and pip cache.
    • 17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink python to python3.
    • 02.01.20: - Add python3 on top of python2 to image during transition.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 25.02.19: - Rebase to Bionic, add python deps for scripts.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 13.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 10.04.17: - Bump to 2.0 Release.
    • 25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch.
    • 08.02.17: - Add pythonioenconding=utf8 as env.
    • 15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme.
    • 11.09.16: - Bump to release of 1.10.
    • 09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab.
    • 28.08.16: - Rebase to alpine, using git version of sab.
    • 17.03.16: - Bump to install 1.0 final at startup.
    • 14.03.16: - Refresh image to pick up latest RC.
    • 23.01.15: - Refresh image.
    • 14.12.15: - Refresh image to pick up latest beta.
    • 21.08.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sabnzbd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sabnzbd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sabnzbd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sabnzbd:latest

    Versions

    • 03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 31.07.22: - Add nightly tag.
    • 10.03.22: - Add nzb-notify.
    • 22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch.
    • 25.01.22: - Rebase Unstable branch to Alpine.
    • 13.01.22: - Add alpine branch
    • 08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080
    • 24.07.21: - Add python3-setuptools.
    • 14.05.21: - Use linuxserver.io wheel index for pip packages.
    • 12.02.21: - Clean up rust/cargo and pip cache.
    • 17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink python to python3.
    • 02.01.20: - Add python3 on top of python2 to image during transition.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 25.02.19: - Rebase to Bionic, add python deps for scripts.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 13.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 10.04.17: - Bump to 2.0 Release.
    • 25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch.
    • 08.02.17: - Add pythonioenconding=utf8 as env.
    • 15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme.
    • 11.09.16: - Bump to release of 1.10.
    • 09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab.
    • 28.08.16: - Rebase to alpine, using git version of sab.
    • 17.03.16: - Bump to install 1.0 final at startup.
    • 14.03.16: - Refresh image to pick up latest RC.
    • 23.01.15: - Refresh image.
    • 14.12.15: - Refresh image to pick up latest beta.
    • 21.08.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-scrutiny/index.html b/images/docker-scrutiny/index.html index ca8da9d9c9..37f1b2e651 100644 --- a/images/docker-scrutiny/index.html +++ b/images/docker-scrutiny/index.html @@ -1,4 +1,4 @@ - scrutiny - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker

    linuxserver/scrutiny

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in "collector" mode by specifying SCRUTINY_API_ENDPOINT. Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is 8080).

    You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off.

    A fully commented example configuration yaml file can be found in the original project repository here. Place this file in the location mounted to /config.

    A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + scrutiny - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker

    linuxserver/scrutiny

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in "collector" mode by specifying SCRUTINY_API_ENDPOINT. Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is 8080).

    You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off.

    A fully commented example configuration yaml file can be found in the original project repository here. Place this file in the location mounted to /config.

    A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       scrutiny:
    @@ -45,4 +45,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8080 Port for scrutiny's web interface and API.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    SCRUTINY_API_ENDPOINT=http://localhost:8080 # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector
    SCRUTINY_WEB=true # optional - Run the web service.
    SCRUTINY_COLLECTOR=true # optional - Run the metrics collector.

    Volume Mappings (-v)

    Volume Function
    /config Where config is stored.
    /run/udev:ro Provides necessary metadata to Scrutiny.

    Device Mappings (--device)

    Parameter Function
    /dev/sda This is how Scrutiny accesses drives. Optionally supply /dev:/dev instead for all devices.
    /dev/sdb A second drive.
    /dev/nvme1n1 An NVMe drive. NVMe requires --cap-add=SYS_ADMIN.

    Miscellaneous Options

    Parameter Function

    Portainer notice

    {% hint style="warning" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it scrutiny /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f scrutiny
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' scrutiny
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/scrutiny:latest

    Versions

    • 13.06.22: - Deprecate container.
    • 19.01.22: - Rebase to Alpine 3.15.
    • 22.11.20: - Added fix for nsswitch.conf to resolve local hosts
    • 17.09.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it scrutiny /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f scrutiny
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' scrutiny
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/scrutiny:latest

    Versions

    • 13.06.22: - Deprecate container.
    • 19.01.22: - Rebase to Alpine 3.15.
    • 22.11.20: - Added fix for nsswitch.conf to resolve local hosts
    • 17.09.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-shout-irc/index.html b/images/docker-shout-irc/index.html index 0e9455b3a2..aae6a77247 100644 --- a/images/docker-shout-irc/index.html +++ b/images/docker-shout-irc/index.html @@ -1,4 +1,4 @@ - shout-irc - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge

    linuxserver/shout-irc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Shout-irc is a web IRC client that you host on your own server.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + shout-irc - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge

    linuxserver/shout-irc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Shout-irc is a web IRC client that you host on your own server.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=shout-irc \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -24,4 +24,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9000 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    • To log in to the application, browse to https://:9000. To setup user account(s) edit /config/config.json Change the value public: true, to public: false, restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add <user> Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it shout-irc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f shout-irc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' shout-irc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/shout-irc

    Versions

    • 11.06.19: - DEPRECATE IMAGE, USE THELOUNGE.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.08.18: - Rebase to alpine 3.8.
    • 13.12.17: - Rebase to alpine 3.7.
    • 27.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 31.08.16: - Rebase to alpine linux, move to lsiocommunity
    \ No newline at end of file +

    Application Setup

    • To log in to the application, browse to https://:9000. To setup user account(s) edit /config/config.json Change the value public: true, to public: false, restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add <user> Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it shout-irc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f shout-irc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' shout-irc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/shout-irc

    Versions

    • 11.06.19: - DEPRECATE IMAGE, USE THELOUNGE.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.08.18: - Rebase to alpine 3.8.
    • 13.12.17: - Rebase to alpine 3.7.
    • 27.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 31.08.16: - Rebase to alpine linux, move to lsiocommunity
    \ No newline at end of file diff --git a/images/docker-sickchill/index.html b/images/docker-sickchill/index.html index edec8d03c4..588eef8e5d 100644 --- a/images/docker-sickchill/index.html +++ b/images/docker-sickchill/index.html @@ -1,4 +1,4 @@ - sickchill - LinuxServer.io

    linuxserver/sickchill

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sickchill:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + sickchill - LinuxServer.io       

    linuxserver/sickchill

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sickchill:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       sickchill:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8081 will map the container's port 8081 to port 8081 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London specify your TimeZone e.g. Europe/London

    Volume Mappings (-v)

    Volume Function
    /config this will store config on the docker host
    /downloads this will store any downloaded data on the docker host
    /tv this will allow sickchill to view what you already have

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickchill /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickchill
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickchill
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sickchill:latest

    Versions

    • 17.02.22: - Rebase to alpine 3.17.
    • 17.02.22: - Rebase to alpine 3.15.
    • 20.11.21: - Modify binary usage from SickChill.py to SickChill.
    • 14.05.21: - Add linuxserver wheel index.
    • 12.02.21: - Rebasing to alpine 3.13. Add python certifi.
    • 17.09.20: - Update dependencies.
    • 06.09.20: - Switch to python3, install pip package.
    • 22.04.20: - Switch to git clone and using git tags for versioning.
    • 09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 17.04.19: - Adding Nodejs dependancy.
    • 31.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.10.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickchill /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickchill
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickchill
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sickchill:latest

    Versions

    • 17.02.22: - Rebase to alpine 3.17.
    • 17.02.22: - Rebase to alpine 3.15.
    • 20.11.21: - Modify binary usage from SickChill.py to SickChill.
    • 14.05.21: - Add linuxserver wheel index.
    • 12.02.21: - Rebasing to alpine 3.13. Add python certifi.
    • 17.09.20: - Update dependencies.
    • 06.09.20: - Switch to python3, install pip package.
    • 22.04.20: - Switch to git clone and using git tags for versioning.
    • 09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 17.04.19: - Adding Nodejs dependancy.
    • 31.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.10.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-sickgear/index.html b/images/docker-sickgear/index.html index 047a075ce8..4ad8d6a039 100644 --- a/images/docker-sickgear/index.html +++ b/images/docker-sickgear/index.html @@ -1,4 +1,4 @@ - sickgear - LinuxServer.io

    linuxserver/sickgear

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..

    For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sickgear:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Setting up the application

    Access the webui at <your-ip>:8081, for more information check out SickGear.

    Migration

    Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup

    • The post processing directory which is volume mounted as downloads within this container may be incoming in other versions.

    • The permissions environmental variables which are defined as PGID and PUID within this container may have been APP_UID and APP_UID in other versions.

    • The configuration file directory which is volume mounted as config within this container may be set as the environmetal variable APP_DATA in other versions.

    • The cache directory which is set in config.ini may be configured as a fixed path cache_dir = /data/cache. Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache which will allow SickGear to look for the folder relative to the volume mounted /config directory.

    It is recommended that a clean install be completed, rather than a migration, however if migration is necessary:

    • start a new instance of this image

    • compare and align SickGear version numbers bewteen old and new. Ideally they should match but at a minumum the old vesion should be a lower version number to allow SickGear itself to try and migrate

    • stop both containers

    • notice the configuration difference and migrate copies of the old settings into the new app

    • start the new container and test

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + sickgear - LinuxServer.io       

    linuxserver/sickgear

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..

    For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sickgear:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Setting up the application

    Access the webui at <your-ip>:8081, for more information check out SickGear.

    Migration

    Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup

    • The post processing directory which is volume mounted as downloads within this container may be incoming in other versions.

    • The permissions environmental variables which are defined as PGID and PUID within this container may have been APP_UID and APP_UID in other versions.

    • The configuration file directory which is volume mounted as config within this container may be set as the environmetal variable APP_DATA in other versions.

    • The cache directory which is set in config.ini may be configured as a fixed path cache_dir = /data/cache. Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache which will allow SickGear to look for the folder relative to the volume mounted /config directory.

    It is recommended that a clean install be completed, rather than a migration, however if migration is necessary:

    • start a new instance of this image

    • compare and align SickGear version numbers bewteen old and new. Ideally they should match but at a minumum the old vesion should be a lower version number to allow SickGear itself to try and migrate

    • stop both containers

    • notice the configuration difference and migrate copies of the old settings into the new app

    • start the new container and test

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       sickgear:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8081 will map the container's port 8081 to port 8081 on the host

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config this will store any uploaded data on the docker host
    /tv where you store your tv shows
    /downloads your downloads folder for post processing (must not be download in progress)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickgear /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickgear
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickgear
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sickgear:latest

    Versions

    • 18.11.22: - Update service file from legacy SickBeard.py to sickgear.py.
    • 10.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 19.09.22: - Rebase to alpine 3.15. Build unrar from source.
    • 31.01.21: - Add unrar.
    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 03.06.20: - Rebasing to alpine 3.12, switch to python3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 07.11.18: - Pipeline prep
    • 07.07.18: - Initial draft release
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickgear /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickgear
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickgear
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sickgear:latest

    Versions

    • 18.11.22: - Update service file from legacy SickBeard.py to sickgear.py.
    • 10.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 19.09.22: - Rebase to alpine 3.15. Build unrar from source.
    • 31.01.21: - Add unrar.
    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 03.06.20: - Rebasing to alpine 3.12, switch to python3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 07.11.18: - Pipeline prep
    • 07.07.18: - Initial draft release
    \ No newline at end of file diff --git a/images/docker-sickrage/index.html b/images/docker-sickrage/index.html index cd95f2ab87..72f23d3301 100644 --- a/images/docker-sickrage/index.html +++ b/images/docker-sickrage/index.html @@ -1,4 +1,4 @@ - sickrage - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead

    linuxserver/sickrage

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
    + sickrage - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead

    linuxserver/sickrage

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Here are some example snippets to help you get started creating a container from this image.

    docker

    docker create \
       --name=sickrage \
       -e PUID=1000 \
       -e PGID=1000 \
    @@ -28,4 +28,4 @@
         restart: unless-stopped
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8081 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /downloads ISOs.
    /tv TV library directory.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Application Setup

    Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickrage /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickrage
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickrage
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/sickrage

    Versions

    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 09.08.18: - Change repository to Sick-Rage
    • 17.08.18: - Rebase to alpine 3.8.
    • 20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources.
    • 12.12.17: - Rebase to alpine 3.7.
    • 06.08.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 30.12.15: - Build later version of unrar from source, removed uneeded mako package.
    • 20.11.15: - Updated to new repo, by SickRage Team.
    • 15.10.15: - Initial Release.
    \ No newline at end of file +

    Application Setup

    Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sickrage /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sickrage
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sickrage
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/sickrage

    Versions

    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 09.08.18: - Change repository to Sick-Rage
    • 17.08.18: - Rebase to alpine 3.8.
    • 20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources.
    • 12.12.17: - Rebase to alpine 3.7.
    • 06.08.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 30.12.15: - Build later version of unrar from source, removed uneeded mako package.
    • 20.11.15: - Updated to new repo, by SickRage Team.
    • 15.10.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-smokeping/index.html b/images/docker-smokeping/index.html index 623b13d50c..0f814471b2 100644 --- a/images/docker-smokeping/index.html +++ b/images/docker-smokeping/index.html @@ -1,4 +1,4 @@ - smokeping - LinuxServer.io

    linuxserver/smokeping

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/smokeping:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Once running the URL will be http://<host-ip>/smokeping/smokeping.cgi. For example a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi.
    • Basics are, edit the Targets file to ping the hosts you're interested in to match the format found there.
    • Wait 10 minutes.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + smokeping - LinuxServer.io       

    linuxserver/smokeping

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/smokeping:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    • Once running the URL will be http://<host-ip>/smokeping/smokeping.cgi. For example a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi.
    • Basics are, edit the Targets file to ping the hosts you're interested in to match the format found there.
    • Wait 10 minutes.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       smokeping:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Allows HTTP access to the internal webserver.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Configure the Targets file here
    /data Storage location for db and application data (graphs etc)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it smokeping /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f smokeping
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' smokeping
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/smokeping:latest

    Versions

    • 12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap.
    • 29.03.21: - Dockerfile: Install curl before we call it
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.11.18: - Allow access without /smokeping in URL.
    • 28.04.18: - Rebase to alpine 3.8.
    • 09.04.18: - Add bc package.
    • 08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo).
    • 13.12.17: - Expose httpd_conf to /config.
    • 13.12.17: - Rebase to alpine 3.7.
    • 24.07.17: - Add :unraid tag for hosts without ipv6.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Rebase to alpine 3.6.
    • 07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations
    • 12.04.17: - Fix cropper.js path, thanks nibbledeez.
    • 09.02.17: - Rebase to alpine 3.5.
    • 17.10.16: - Add ttf-dejavu package as per LT forum.
    • 10.09.16: - Add layer badges to README.
    • 05.09.16: - Add curl package.
    • 28.08.16: - Add badges to README.
    • 25.07.16: - Rebase to alpine linux.
    • 23.07.16: - Fix apt script confusion.
    • 29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it smokeping /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f smokeping
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' smokeping
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/smokeping:latest

    Versions

    • 12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap.
    • 29.03.21: - Dockerfile: Install curl before we call it
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.11.18: - Allow access without /smokeping in URL.
    • 28.04.18: - Rebase to alpine 3.8.
    • 09.04.18: - Add bc package.
    • 08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo).
    • 13.12.17: - Expose httpd_conf to /config.
    • 13.12.17: - Rebase to alpine 3.7.
    • 24.07.17: - Add :unraid tag for hosts without ipv6.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Rebase to alpine 3.6.
    • 07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations
    • 12.04.17: - Fix cropper.js path, thanks nibbledeez.
    • 09.02.17: - Rebase to alpine 3.5.
    • 17.10.16: - Add ttf-dejavu package as per LT forum.
    • 10.09.16: - Add layer badges to README.
    • 05.09.16: - Add curl package.
    • 28.08.16: - Add badges to README.
    • 25.07.16: - Rebase to alpine linux.
    • 23.07.16: - Fix apt script confusion.
    • 29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)
    \ No newline at end of file diff --git a/images/docker-snapdrop/index.html b/images/docker-snapdrop/index.html index 4c7e85563a..dffb17c782 100644 --- a/images/docker-snapdrop/index.html +++ b/images/docker-snapdrop/index.html @@ -1,4 +1,4 @@ - snapdrop - LinuxServer.io

    linuxserver/snapdrop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/snapdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is accessible at http://SERVERIP:PORT

    If you intend to expose Snapdrop to the internet, edit /config/nginx/site-confs/default.conf and uncomment the real_ip settings

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + snapdrop - LinuxServer.io       

    linuxserver/snapdrop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/snapdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is accessible at http://SERVERIP:PORT

    If you intend to expose Snapdrop to the internet, edit /config/nginx/site-confs/default.conf and uncomment the real_ip settings

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       snapdrop:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui
    443 https gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Persistent configs and logs.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it snapdrop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f snapdrop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' snapdrop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/snapdrop:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config.
    • 15.09.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it snapdrop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f snapdrop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' snapdrop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/snapdrop:latest

    Versions

    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config.
    • 15.09.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-snipe-it/index.html b/images/docker-snipe-it/index.html index 40b7dce36d..13eb405168 100644 --- a/images/docker-snipe-it/index.html +++ b/images/docker-snipe-it/index.html @@ -1,4 +1,4 @@ - snipe-it - LinuxServer.io

    linuxserver/snipe-it

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/snipe-it:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:8080, for more information check out Snipe-it. This container requires a MySQL or MariaDB server to connect to, we reccomend ours

    This container also generates an SSL certificate and stores it in

    /config/keys/cert.crt
    + snipe-it - LinuxServer.io       

    linuxserver/snipe-it

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/snipe-it:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the webui at <your-ip>:8080, for more information check out Snipe-it. This container requires a MySQL or MariaDB server to connect to, we reccomend ours

    This container also generates an SSL certificate and stores it in

    /config/keys/cert.crt
     /config/keys/cert.key
     
    To use your own certificate swap these files with yours. To use SSL forward your port to 443 inside the container IE:

    -p 443:443
     

    The application accepts a series of environment variables to further customize itself on boot:

    Parameter Function
    -e APP_ENV= Default is production but can use testing or develop
    -e APP_DEBUG= Set to true to see debugging output in the web UI
    -e APP_LOCALE= Default is en set to the language preferred full list here
    -e MAIL_PORT_587_TCP_ADDR= SMTP mailserver ip or hostname
    -e MAIL_PORT_587_TCP_PORT= SMTP mailserver port
    -e MAIL_ENV_FROM_ADDR= The email address mail should be replied to and listed when sent
    -e MAIL_ENV_FROM_NAME= The name listed on email sent from the default account on the system
    -e MAIL_ENV_ENCRYPTION= Mail encryption to use IE tls
    -e MAIL_ENV_USERNAME= SMTP server login username
    -e MAIL_ENV_PASSWORD= SMTP server login password

    PHP customization

    This image uses our NGINX base image all configuration files for PHP and NGINX are located in /config/php. To overide any defaults please modify /config/php/php-local.ini IE for upload size:

    upload_max_filesize = 16
    @@ -42,4 +42,4 @@ post_max_size = 16M
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 Snipe-IT Web UI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    APP_URL=http://localhost:8080 Hostname or IP and port if applicable, be sure to define https/http
    MYSQL_PORT_3306_TCP_ADDR= Mysql hostname or IP to use
    MYSQL_PORT_3306_TCP_PORT= Mysql port to use
    MYSQL_DATABASE= Mysql database to use
    MYSQL_USER= Mysql user to use
    MYSQL_PASSWORD= Mysql password to use
    TZ=US/Pacific Specify a timezone to use EG Europe/London, this is required to run snipe-it

    Volume Mappings (-v)

    Volume Function
    /config Contains your config files and data storage for Snipe-IT

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it snipe-it /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f snipe-it
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' snipe-it
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/snipe-it:latest

    Versions

    • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 14.05.22: - Add php7-sodium for v6.
    • 12.04.22: - Don't build development elements.
    • 02.03.22: - Rework init logic, do not show default compose.
    • 29.06.21: - Rebasing to alpine 3.14.
    • 30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time.
    • 10.04.19: - Fix permissions for new bootstrap cache directory.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 31.10.18: - Rebasing to alpine 3.8
    • 05.08.18: - Migration to live build server.
    • 13.06.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it snipe-it /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f snipe-it
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' snipe-it
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/snipe-it:latest

    Versions

    • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 14.05.22: - Add php7-sodium for v6.
    • 12.04.22: - Don't build development elements.
    • 02.03.22: - Rework init logic, do not show default compose.
    • 29.06.21: - Rebasing to alpine 3.14.
    • 30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time.
    • 10.04.19: - Fix permissions for new bootstrap cache directory.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 31.10.18: - Rebasing to alpine 3.8
    • 05.08.18: - Migration to live build server.
    • 13.06.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-sonarr/index.html b/images/docker-sonarr/index.html index 3419400c63..2062a4844e 100644 --- a/images/docker-sonarr/index.html +++ b/images/docker-sonarr/index.html @@ -1,4 +1,4 @@ - sonarr - LinuxServer.io

    linuxserver/sonarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sonarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from Sonarr (currently v3)
    develop Development releases from Sonarr (currently v4)

    Application Setup

    Access the webui at <your-ip>:8989, for more information check out Sonarr.

    Media folders

    We have set /tv and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + sonarr - LinuxServer.io       

    linuxserver/sonarr

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sonarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases from Sonarr (currently v3)
    develop Development releases from Sonarr (currently v4)

    Application Setup

    Access the webui at <your-ip>:8989, for more information check out Sonarr.

    Media folders

    We have set /tv and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       sonarr:
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8989 The port for the Sonarr webinterface

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Sonarr

    Volume Mappings (-v)

    Volume Function
    /config Database and sonarr configs
    /tv Location of TV library on disk (See note in Application setup)
    /downloads Location of download managers output directory (See note in Application setup)

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sonarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sonarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sonarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sonarr:latest

    Versions

    • 24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16.
    • 03.08.22: - Deprecate armhf.
    • 02.08.22: - Add armhf deprecation warning.
    • 28.04.22: - Rebase master branch to mono 6.12 base (focal).
    • 20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch.
    • 28.12.21: - Add develop-alpine branch.
    • 11.05.21: - Make the paths clearer to the user.
    • 10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update.
    • 18.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 10.05.19: - Rebase to Bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.02.19: - Multi arch images and pipeline build logic
    • 15.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
    • 14.04.17: - Change to mount /etc/localtime in README, thanks cbgj.
    • 13.04.17: - Switch to official mono repository.
    • 30.09.16: - Fix umask
    • 23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable
    • 15.09.16: - Add libcurl3 package.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 20.07.16: - Rebase to xenial.
    • 31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sonarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sonarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sonarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sonarr:latest

    Versions

    • 24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16.
    • 03.08.22: - Deprecate armhf.
    • 02.08.22: - Add armhf deprecation warning.
    • 28.04.22: - Rebase master branch to mono 6.12 base (focal).
    • 20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch.
    • 28.12.21: - Add develop-alpine branch.
    • 11.05.21: - Make the paths clearer to the user.
    • 10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update.
    • 18.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 10.05.19: - Rebase to Bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.02.19: - Multi arch images and pipeline build logic
    • 15.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
    • 14.04.17: - Change to mount /etc/localtime in README, thanks cbgj.
    • 13.04.17: - Switch to official mono repository.
    • 30.09.16: - Fix umask
    • 23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable
    • 15.09.16: - Add libcurl3 package.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 20.07.16: - Rebase to xenial.
    • 31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.
    \ No newline at end of file diff --git a/images/docker-sqlitebrowser/index.html b/images/docker-sqlitebrowser/index.html index 0b1ae407bb..c422c4a20a 100644 --- a/images/docker-sqlitebrowser/index.html +++ b/images/docker-sqlitebrowser/index.html @@ -1,4 +1,4 @@ - sqlitebrowser - LinuxServer.io

    linuxserver/sqlitebrowser

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sqlitebrowser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + sqlitebrowser - LinuxServer.io       

    linuxserver/sqlitebrowser

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/sqlitebrowser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       sqlitebrowser:
    @@ -28,4 +28,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Sqlitebrowser desktop gui.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings and potentially dump files.

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sqlitebrowser /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sqlitebrowser
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sqlitebrowser
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sqlitebrowser:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 16.02.22: - Rebase to Alpine.
    • 20.01.21: - Remove Wireshark reference.
    • 29.07.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it sqlitebrowser /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f sqlitebrowser
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' sqlitebrowser
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/sqlitebrowser:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 16.02.22: - Rebase to Alpine.
    • 20.01.21: - Remove Wireshark reference.
    • 29.07.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-swag/index.html b/images/docker-swag/index.html index 175fc35e7f..344d6e0d0a 100644 --- a/images/docker-swag/index.html +++ b/images/docker-swag/index.html @@ -1,4 +1,4 @@ - swag - LinuxServer.io

    linuxserver/swag

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/swag:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Validation and initial setup

    • Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).
    • If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. You can use our duckdns image to update your IP on duckdns.org.
    • For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80
    • For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
    • Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for "dns only" instead of "dns + proxy"
    • Google dns plugin is meant to be used with "Google Cloud DNS", a paid enterprise product, and not for "Google Domains DNS"
    • DuckDNS only supoprts two types of DNS validated certificates (not both at the same time):
      1. Certs that only cover your main subdomain (ie. yoursubdomain.duckdns.org, leave the SUBDOMAINS variable empty)
      2. Certs that cover sub-subdomains of your main subdomain (ie. *.yoursubdomain.duckdns.org, set the SUBDOMAINS variable to wildcard)
    • --cap-add=NET_ADMIN is required for fail2ban to modify iptables
    • After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf).
    • Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.

    Security and password protection

    • The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
    • Per RFC7919, the container is shipping ffdhe4096 as the dhparams.pem.
    • If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
    • You can add multiple user:pass to .htpasswd. For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one
    • You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.

    Site config and reverse proxy

    • The default site config resides at /config/nginx/site-confs/default.conf. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start.
    • Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo.
    • If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines
    • If you wish to redirect http to https, you must expose port 80

    Using certs in other containers

    • This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.
    • To use these certs in other containers, do either of the following:
    • (Easier) Mount the container's config folder in other containers (ie. -v /path-to-swag-config:/swag-ssl) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/
    • (More secure) Mount the SWAG folder etc that resides under /config in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl) and in the other containers, use the cert location /swag-ssl/letsencrypt/live/<your.domain.url>/ (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs)
    • These certs include:
    • cert.pem, chain.pem, fullchain.pem and privkey.pem, which are generated by Certbot and used by nginx and various other apps
    • privkey.pfx, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)
    • priv-fullchain-bundle.pem, a pem cert that bundles the private key and the fullchain, used by apps like ZNC

    Using fail2ban

    • This container includes fail2ban set up with 5 jails by default:
    • nginx-http-auth
    • nginx-badbots
    • nginx-botsearch
    • nginx-deny
    • nginx-unauthorized
    • To enable or disable other jails, modify the file /config/fail2ban/jail.local
    • To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local)
    • You can check which jails are active via docker exec -it swag fail2ban-client status
    • You can check the status of a specific jail via docker exec -it swag fail2ban-client status <jail name>
    • You can unban an IP via docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
    • A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands

    Updating configs

    • This container creates a number of configs for nginx, proxy samples, etc.
    • Config updates are noted in the changelog but not automatically applied to your files.
    • If you have modified a file with noted changes in the changelog:
    • Keep your existing configs as is (not broken, don't fix)
    • Review our repository commits and apply the new changes yourself
    • Delete the modified config file with listed updates, restart the container, reapply your changes
    • If you have NOT modified a file with noted changes in the changelog:
    • Delete the config file with listed updates, restart the container
    • Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master
    • Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
    • You can check the new sample and adjust your active config as needed.

    Migration from the old linuxserver/letsencrypt image

    Please follow the instructions on this blog post.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + swag - LinuxServer.io       

    linuxserver/swag

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt™) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/swag:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Validation and initial setup

    • Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).
    • If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. You can use our duckdns image to update your IP on duckdns.org.
    • For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80
    • For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
    • Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for "dns only" instead of "dns + proxy"
    • Google dns plugin is meant to be used with "Google Cloud DNS", a paid enterprise product, and not for "Google Domains DNS"
    • DuckDNS only supoprts two types of DNS validated certificates (not both at the same time):
      1. Certs that only cover your main subdomain (ie. yoursubdomain.duckdns.org, leave the SUBDOMAINS variable empty)
      2. Certs that cover sub-subdomains of your main subdomain (ie. *.yoursubdomain.duckdns.org, set the SUBDOMAINS variable to wildcard)
    • --cap-add=NET_ADMIN is required for fail2ban to modify iptables
    • After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf).
    • Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.

    Security and password protection

    • The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
    • Per RFC7919, the container is shipping ffdhe4096 as the dhparams.pem.
    • If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
    • You can add multiple user:pass to .htpasswd. For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one
    • You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.

    Site config and reverse proxy

    • The default site config resides at /config/nginx/site-confs/default.conf. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start.
    • Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo.
    • If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines
    • If you wish to redirect http to https, you must expose port 80

    Using certs in other containers

    • This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.
    • To use these certs in other containers, do either of the following:
    • (Easier) Mount the container's config folder in other containers (ie. -v /path-to-swag-config:/swag-ssl) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/
    • (More secure) Mount the SWAG folder etc that resides under /config in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl) and in the other containers, use the cert location /swag-ssl/letsencrypt/live/<your.domain.url>/ (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs)
    • These certs include:
    • cert.pem, chain.pem, fullchain.pem and privkey.pem, which are generated by Certbot and used by nginx and various other apps
    • privkey.pfx, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)
    • priv-fullchain-bundle.pem, a pem cert that bundles the private key and the fullchain, used by apps like ZNC

    Using fail2ban

    • This container includes fail2ban set up with 5 jails by default:
    • nginx-http-auth
    • nginx-badbots
    • nginx-botsearch
    • nginx-deny
    • nginx-unauthorized
    • To enable or disable other jails, modify the file /config/fail2ban/jail.local
    • To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local)
    • You can check which jails are active via docker exec -it swag fail2ban-client status
    • You can check the status of a specific jail via docker exec -it swag fail2ban-client status <jail name>
    • You can unban an IP via docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
    • A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands

    Updating configs

    • This container creates a number of configs for nginx, proxy samples, etc.
    • Config updates are noted in the changelog but not automatically applied to your files.
    • If you have modified a file with noted changes in the changelog:
    • Keep your existing configs as is (not broken, don't fix)
    • Review our repository commits and apply the new changes yourself
    • Delete the modified config file with listed updates, restart the container, reapply your changes
    • If you have NOT modified a file with noted changes in the changelog:
    • Delete the config file with listed updates, restart the container
    • Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master
    • Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
    • You can check the new sample and adjust your active config as needed.

    Migration from the old linuxserver/letsencrypt image

    Please follow the instructions on this blog post.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       swag:
    @@ -50,4 +50,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    443 Https port
    80 Http port (required for http validation and http -> https redirect)

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    URL=yourdomain.url Top url you have control over (customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns).
    VALIDATION=http Certbot validation method to use, options are http or dns (dns method also requires DNSPLUGIN variable set).
    SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud. For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns validation only)
    CERTPROVIDER= Optionally define the cert provider. Set to zerossl for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in EMAIL env var). Otherwise defaults to Let's Encrypt.
    DNSPLUGIN=cloudflare Required if VALIDATION is set to dns. Options are acmedns, aliyun, azure, cloudflare, cpanel, desec, digitalocean, directadmin, dnsimple, dnsmadeeasy, dnspod, do, domeneshop, duckdns, dynu, gandi, gehirn, godaddy, google, he, hetzner, infomaniak, inwx, ionos, linode, loopia, luadns, netcup, njalla, nsone, ovh, porkbun, rfc2136, route53, sakuracloud, standalone, transip, and vultr. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf.
    PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins.
    EMAIL= Optional e-mail address used for cert expiration notifications (Required for ZeroSSL).
    ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true
    EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org
    STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes.

    Volume Mappings (-v)

    Volume Function
    /config All the config files including the webroot reside here.

    Miscellaneous Options

    Parameter Function

    Portainer notice

    {% hint style="warning" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it swag /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f swag
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' swag
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/swag:latest

    Versions

    • 08.12.22: - Revamp certbot init.
    • 03.12.22: - Remove defunct cloudxns plugin.
    • 22.11.22: - Pin acme to the same version as certbot.
    • 22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves.
    • 05.11.22: - Update acmedns plugin handling.
    • 06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic.
    • 05.10.22: - Use certbot file hooks instead of command line hooks
    • 04.10.22: - Add godaddy and porkbun dns plugins.
    • 03.10.22: - Add default_server back to default site conf's https listen.
    • 22.09.22: - Added support for DO DNS validation.
    • 22.09.22: - Added certbot-dns-acmedns for DNS01 validation.
    • 20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 10.08.22: - Added support for Dynu DNS validation.
    • 18.05.22: - Added support for Azure DNS validation.
    • 09.04.22: - Added certbot-dns-loopia for DNS01 validation.
    • 05.04.22: - Added support for standalone DNS validation.
    • 28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config
    • 09.01.22: - Added a fail2ban jail for nginx unauthorized
    • 21.12.21: - Fixed issue with iptables not working as expected
    • 30.11.21: - Move maxmind to a new mod
    • 22.11.21: - Added support for Infomaniak DNS for certificate generation.
    • 20.11.21: - Added support for dnspod validation.
    • 15.11.21: - Added support for deSEC DNS for wildcard certificate generation.
    • 26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus
    • 23.10.21: - Fix Hurricane Electric (HE) DNS validation.
    • 12.10.21: - Fix deprecated LE root cert check to fix failures when using STAGING=true, and failures in revoking.
    • 06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps.
    • 01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration
    • 19.09.21: - Add an optional header to opt out of Google FLoC in ssl.conf.
    • 17.09.21: - Mark SUBDOMAINS var as optional.
    • 01.08.21: - Add support for ionos dns validation.
    • 15.07.21: - Fix libmaxminddb issue due to upstream change.
    • 07.07.21: - Rebase to alpine 3.14.
    • 24.06.21: - Update default nginx conf folder.
    • 28.05.21: - Existing users should update: authelia-server.conf - Use resolver.conf and patch for CVE-2021-32637.
    • 20.05.21: - Modify resolver.conf generation to detect and ignore ipv6.
    • 14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for dhparams.pem per RFC7919. Added worker_processes.conf, which sets the number of nginx workers, and resolver.conf, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later.
    • 21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method.
    • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
    • 12.04.21: - Add support for vultr dns validation.
    • 14.03.21: - Add support for directadmin dns validation.
    • 12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds.
    • 10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users.
    • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
    • 26.01.21: - Add support for hetzner dns validation.
    • 20.01.21: - Add check for ZeroSSL EAB retrieval.
    • 08.01.21: - Add support for getting certs from ZeroSSL via optional CERTPROVIDER env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled.
    • 03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting
    • 10.12.20: - Add support for njalla dns validation
    • 09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation.
    • 01.11.20: - Add support for netcup dns validation
    • 29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy.
    • 04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering.
    • 20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme.
    • 08.09.20: - Add php7-xsl.
    • 01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs.
    • 03.08.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it swag /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f swag
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' swag
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/swag:latest

    Versions

    • 08.12.22: - Revamp certbot init.
    • 03.12.22: - Remove defunct cloudxns plugin.
    • 22.11.22: - Pin acme to the same version as certbot.
    • 22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves.
    • 05.11.22: - Update acmedns plugin handling.
    • 06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic.
    • 05.10.22: - Use certbot file hooks instead of command line hooks
    • 04.10.22: - Add godaddy and porkbun dns plugins.
    • 03.10.22: - Add default_server back to default site conf's https listen.
    • 22.09.22: - Added support for DO DNS validation.
    • 22.09.22: - Added certbot-dns-acmedns for DNS01 validation.
    • 20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 10.08.22: - Added support for Dynu DNS validation.
    • 18.05.22: - Added support for Azure DNS validation.
    • 09.04.22: - Added certbot-dns-loopia for DNS01 validation.
    • 05.04.22: - Added support for standalone DNS validation.
    • 28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config
    • 09.01.22: - Added a fail2ban jail for nginx unauthorized
    • 21.12.21: - Fixed issue with iptables not working as expected
    • 30.11.21: - Move maxmind to a new mod
    • 22.11.21: - Added support for Infomaniak DNS for certificate generation.
    • 20.11.21: - Added support for dnspod validation.
    • 15.11.21: - Added support for deSEC DNS for wildcard certificate generation.
    • 26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus
    • 23.10.21: - Fix Hurricane Electric (HE) DNS validation.
    • 12.10.21: - Fix deprecated LE root cert check to fix failures when using STAGING=true, and failures in revoking.
    • 06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps.
    • 01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration
    • 19.09.21: - Add an optional header to opt out of Google FLoC in ssl.conf.
    • 17.09.21: - Mark SUBDOMAINS var as optional.
    • 01.08.21: - Add support for ionos dns validation.
    • 15.07.21: - Fix libmaxminddb issue due to upstream change.
    • 07.07.21: - Rebase to alpine 3.14.
    • 24.06.21: - Update default nginx conf folder.
    • 28.05.21: - Existing users should update: authelia-server.conf - Use resolver.conf and patch for CVE-2021-32637.
    • 20.05.21: - Modify resolver.conf generation to detect and ignore ipv6.
    • 14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for dhparams.pem per RFC7919. Added worker_processes.conf, which sets the number of nginx workers, and resolver.conf, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later.
    • 21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method.
    • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
    • 12.04.21: - Add support for vultr dns validation.
    • 14.03.21: - Add support for directadmin dns validation.
    • 12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds.
    • 10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users.
    • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
    • 26.01.21: - Add support for hetzner dns validation.
    • 20.01.21: - Add check for ZeroSSL EAB retrieval.
    • 08.01.21: - Add support for getting certs from ZeroSSL via optional CERTPROVIDER env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled.
    • 03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting
    • 10.12.20: - Add support for njalla dns validation
    • 09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation.
    • 01.11.20: - Add support for netcup dns validation
    • 29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy.
    • 04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering.
    • 20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme.
    • 08.09.20: - Add php7-xsl.
    • 01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs.
    • 03.08.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-synclounge/index.html b/images/docker-synclounge/index.html index ccac561c07..7b59e53c28 100644 --- a/images/docker-synclounge/index.html +++ b/images/docker-synclounge/index.html @@ -1,4 +1,4 @@ - synclounge - LinuxServer.io

    linuxserver/synclounge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/synclounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The web app and the server are both accessible at http://SERVERIP:8088.

    Note: It is recommended to use http as the external proto with a reverse proxy due to https not working with external plex clients.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + synclounge - LinuxServer.io       

    linuxserver/synclounge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/synclounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The web app and the server are both accessible at http://SERVERIP:8088.

    Note: It is recommended to use http as the external proto with a reverse proxy due to https not working with external plex clients.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       synclounge:
    @@ -22,4 +22,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/synclounge:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8088 Web app and server port

    Environment Variables (-e)

    Env Function
    TZ=Europe/London Specify a timezone to use EG Europe/London
    AUTH_LIST=plexuser1,plexuser2,email1,machineid1 If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces.
    AUTOJOIN_ENABLED=false DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room) - Set to true to let users autojoin the server and a room (specified by the AUTOJOIN_ROOM var).
    AUTOJOIN_ROOM=roomname DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room) - Set the room name for auto joining (requires AUTOJOIN_ENABLED set to true).

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it synclounge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f synclounge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' synclounge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/synclounge:latest

    Versions

    • 29.11.22: - Rebase to alpine 3.17, upgrade to s6v3.
    • 19.09.22: - Rebase to alpine 3.15.
    • 12.02.21: - Fix optional dependency builds in aarch64 image.
    • 12.02.21: - Rebasing to alpine 3.13.
    • 28.10.20: - Update to v4. Env vars EXTERNAL_URL, EXTERNAL_SERVER_PORT and AUTOJOIN_PASSWORD are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED and AUTOJOIN_ROOM are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room. If you are reverse proxying, do not forget to update your proxy settings (here and here) as the server port and addresses are changed.
    • 11.10.20: - Pin builds to upstream commit 6aecc9bd while evaluating the breaking changes upstream.
    • 27.09.20: - Updating the external repo endpoint.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 11.05.20: - Initial Release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it synclounge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f synclounge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' synclounge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/synclounge:latest

    Versions

    • 29.11.22: - Rebase to alpine 3.17, upgrade to s6v3.
    • 19.09.22: - Rebase to alpine 3.15.
    • 12.02.21: - Fix optional dependency builds in aarch64 image.
    • 12.02.21: - Rebasing to alpine 3.13.
    • 28.10.20: - Update to v4. Env vars EXTERNAL_URL, EXTERNAL_SERVER_PORT and AUTOJOIN_PASSWORD are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED and AUTOJOIN_ROOM are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room. If you are reverse proxying, do not forget to update your proxy settings (here and here) as the server port and addresses are changed.
    • 11.10.20: - Pin builds to upstream commit 6aecc9bd while evaluating the breaking changes upstream.
    • 27.09.20: - Updating the external repo endpoint.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 11.05.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-syncthing/index.html b/images/docker-syncthing/index.html index 4e64a82e15..0222eb4a12 100644 --- a/images/docker-syncthing/index.html +++ b/images/docker-syncthing/index.html @@ -1,4 +1,4 @@ - syncthing - LinuxServer.io

    linuxserver/syncthing

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/syncthing:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    **Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password for the webUI.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + syncthing - LinuxServer.io       

    linuxserver/syncthing

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/syncthing:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    **Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password for the webUI.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       syncthing:
    @@ -37,4 +37,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8384 Application WebUI
    22000/tcp Listening port (TCP)
    22000/udp Listening port (UDP)
    21027/udp Protocol discovery

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.
    /data1 Data1
    /data2 Data2

    Miscellaneous Options

    Parameter Function
    --hostname= Optionally the hostname can be defined.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it syncthing /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f syncthing
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' syncthing
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/syncthing:latest

    Versions

    • 17.08.22: - Build on alpine 3.16 for go 1.18).
    • 03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18).
    • 05.10.21: - Rebase to alpine 3.14.
    • 12.05.21: - Remove sysctl parameter again
    • 03.05.21: - Raise maximum UDP buffer size.
    • 03.05.21: - Add port mapping for 22000/udp.
    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 05.03.19: - Update Build process for v1.1.0 release.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 30.07.18: - Rebase to alpine 3.8 and use buildstage.
    • 13.12.17: - Rebase to alpine 3.7.
    • 25.10.17: - Add env for manual setting of umask.
    • 29.07.17: - Simplify build structure as symlinks failing on > 0.14.32
    • 28.05.17: - Rebase to alpine 3.6.
    • 08.02.17: - Rebase to alpine 3.5.
    • 01.11.16: - Switch to compiling latest version from git source.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 11.08.16: - Rebase to alpine linux.
    • 18.12.15: - Initial testing / release (IronicBadger)
    • 24.09.15: - Inital dev complete (Lonix)
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it syncthing /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f syncthing
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' syncthing
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/syncthing:latest

    Versions

    • 17.08.22: - Build on alpine 3.16 for go 1.18).
    • 03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18).
    • 05.10.21: - Rebase to alpine 3.14.
    • 12.05.21: - Remove sysctl parameter again
    • 03.05.21: - Raise maximum UDP buffer size.
    • 03.05.21: - Add port mapping for 22000/udp.
    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 05.03.19: - Update Build process for v1.1.0 release.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 30.07.18: - Rebase to alpine 3.8 and use buildstage.
    • 13.12.17: - Rebase to alpine 3.7.
    • 25.10.17: - Add env for manual setting of umask.
    • 29.07.17: - Simplify build structure as symlinks failing on > 0.14.32
    • 28.05.17: - Rebase to alpine 3.6.
    • 08.02.17: - Rebase to alpine 3.5.
    • 01.11.16: - Switch to compiling latest version from git source.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 11.08.16: - Rebase to alpine linux.
    • 18.12.15: - Initial testing / release (IronicBadger)
    • 24.09.15: - Inital dev complete (Lonix)
    \ No newline at end of file diff --git a/images/docker-syslog-ng/index.html b/images/docker-syslog-ng/index.html index a84fe9f420..adb32e95a7 100644 --- a/images/docker-syslog-ng/index.html +++ b/images/docker-syslog-ng/index.html @@ -1,4 +1,4 @@ - syslog-ng - LinuxServer.io

    linuxserver/syslog-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/syslog-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit /config/syslog-ng.conf to configure your logging sources and destinations. Note: As the application does not run as root you cannot listen on ports < 1024.

    The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl

    More info at syslog-ng.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + syslog-ng - LinuxServer.io       

    linuxserver/syslog-ng

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/syslog-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Edit /config/syslog-ng.conf to configure your logging sources and destinations. Note: As the application does not run as root you cannot listen on ports < 1024.

    The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl

    More info at syslog-ng.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       syslog-ng:
    @@ -31,4 +31,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    5514/udp Syslog UDP
    6601/tcp Syslog TCP
    6514/tcp Syslog TLS

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Stores config and application files
    /var/log Stores logs collected by the syslog-ng service

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it syslog-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f syslog-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' syslog-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/syslog-ng:latest

    Versions

    • 30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support.
    • 01.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.12.21: - Rebase to Alpine 3.15.
    • 01.07.21: - Rebase to Alpine 3.14.
    • 26.05.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it syslog-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f syslog-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' syslog-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/syslog-ng:latest

    Versions

    • 30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support.
    • 01.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.12.21: - Rebase to Alpine 3.15.
    • 01.07.21: - Rebase to Alpine 3.14.
    • 26.05.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-taisun/index.html b/images/docker-taisun/index.html index 42335c54ae..261ded3b11 100644 --- a/images/docker-taisun/index.html +++ b/images/docker-taisun/index.html @@ -1,4 +1,4 @@ - taisun - LinuxServer.io

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/

    linuxserver/taisun

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to:

    • Deploy and manage web based virtual desktops.
    • Deploy Taisun specific stacks of applications
    • Browse available images on popular Docker repositories
    • Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop
    • Spinup a developer container based on popular frameworks and work from a web based IDE
    • Single click remote server access to Taisun and your Docker applications

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    The webui is at http://localhost:3000, for more information on usage see here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + taisun - LinuxServer.io       

    DEPRECATION NOTICE

    This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/

    linuxserver/taisun

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to:

    • Deploy and manage web based virtual desktops.
    • Deploy Taisun specific stacks of applications
    • Browse available images on popular Docker repositories
    • Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop
    • Spinup a developer container based on popular frameworks and work from a web based IDE
    • Single click remote server access to Taisun and your Docker applications

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Application Setup

    The webui is at http://localhost:3000, for more information on usage see here.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2"
     services:
       taisun:
    @@ -17,4 +17,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/taisun
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Taisun WebUI.

    Environment Variables (-e)

    Env Function

    Volume Mappings (-v)

    Volume Function
    /var/run/docker.sock Docker Socket on the system

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it taisun /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f taisun
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' taisun
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/taisun

    Versions

    • 02.02.22: - Deprecate.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 20.07.19: - Build compose bins from source, use minimal docker install from repos.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 30.03.19: - Updating docker-compose build dependancies for musl libc.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 13.02.19: - Initial release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it taisun /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f taisun
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' taisun
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/taisun

    Versions

    • 02.02.22: - Deprecate.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 20.07.19: - Build compose bins from source, use minimal docker install from repos.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 30.03.19: - Updating docker-compose build dependancies for musl libc.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 13.02.19: - Initial release.
    \ No newline at end of file diff --git a/images/docker-tautulli/index.html b/images/docker-tautulli/index.html index 305cdc0a53..c6daa8142b 100644 --- a/images/docker-tautulli/index.html +++ b/images/docker-tautulli/index.html @@ -1,4 +1,4 @@ - tautulli - LinuxServer.io

    linuxserver/tautulli

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tautulli:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Tautulli releases
    develop Built at head of Tautulli nightly branch

    Application Setup

    Access the webui at <your-ip>:8181, for more information check out Tautulli. To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server, turn on Show Advanced and set the Logs Folder to the folder you mapped.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + tautulli - LinuxServer.io       

    linuxserver/tautulli

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tautulli:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable Tautulli releases
    develop Built at head of Tautulli nightly branch

    Application Setup

    Access the webui at <your-ip>:8181, for more information check out Tautulli. To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server, turn on Show Advanced and set the Logs Folder to the folder you mapped.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       tautulli:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8181 WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Contains tautulli config and database.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tautulli /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tautulli
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tautulli
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tautulli:latest

    Versions

    • 15.12.22: - Rebase master branch to Alpine 3.17.
    • 04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 10.01.22: - Rebase to Alpine 3.15.
    • 11.07.21: - Add curl package.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 11.07.20: - Add py3-openssl.
    • 05.06.20: - Rebasing to alpine 3.12. Rework to python3.
    • 12.04.20: - Added mock from pip and donate links.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 23.10.18: - Update plex logs info in readm.
    • 16.08.18: - Rebase to alpine 3.8.
    • 10.03.18: - Rebrand to tautulli.
    • 12.12.17: - Rebase to alpine 3.7.
    • 21.07.17: - Internal git pull instead of at runtime.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 25.05.17: - Rebase to alpine 3.6.
    • 20.04.17: - Add pycryptodomex pip package.
    • 07.02.17: - Rebase to alpine 3.5.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 16.07.15: - Inital Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tautulli /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tautulli
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tautulli
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tautulli:latest

    Versions

    • 15.12.22: - Rebase master branch to Alpine 3.17.
    • 04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 10.01.22: - Rebase to Alpine 3.15.
    • 11.07.21: - Add curl package.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 11.07.20: - Add py3-openssl.
    • 05.06.20: - Rebasing to alpine 3.12. Rework to python3.
    • 12.04.20: - Added mock from pip and donate links.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 23.10.18: - Update plex logs info in readm.
    • 16.08.18: - Rebase to alpine 3.8.
    • 10.03.18: - Rebrand to tautulli.
    • 12.12.17: - Rebase to alpine 3.7.
    • 21.07.17: - Internal git pull instead of at runtime.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 25.05.17: - Rebase to alpine 3.6.
    • 20.04.17: - Add pycryptodomex pip package.
    • 07.02.17: - Rebase to alpine 3.5.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 16.07.15: - Inital Release.
    \ No newline at end of file diff --git a/images/docker-tester/index.html b/images/docker-tester/index.html index 89524aa50a..eba098f496 100644 --- a/images/docker-tester/index.html +++ b/images/docker-tester/index.html @@ -1,4 +1,4 @@ - tester - LinuxServer.io

    linuxserver/tester

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + tester - LinuxServer.io       

    linuxserver/tester

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64
    armhf

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       tester:
    @@ -16,4 +16,4 @@
       --restart unless-stopped \
       lscr.io/linuxserver/tester:latest
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 WebUI

    Environment Variables (-e)

    Env Function
    URL=http://google.com Specify an endpoint, the container will automatically determine the correct protocol and program to use

    Volume Mappings (-v)

    Volume Function

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
    -

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tester /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tester
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tester
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tester:latest

    Versions

    • 16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay.
    • 24.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.04.20: - Initial release.
    \ No newline at end of file +

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tester /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tester
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tester
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tester:latest

    Versions

    • 16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay.
    • 24.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.04.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-thelounge/index.html b/images/docker-thelounge/index.html index 04e93838c0..4c6f1dbc8b 100644 --- a/images/docker-thelounge/index.html +++ b/images/docker-thelounge/index.html @@ -1,4 +1,4 @@ - thelounge - LinuxServer.io

    linuxserver/thelounge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/thelounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    next Next Pre-Releases.
    nightly Nightly images from commits in master.

    Application Setup

    • When the application first runs, it will populate its /config

    • Stop the container

    • Now from the host, edit /config/config.js, wherever you've mapped it

    • In most cases you want the value public: false to allow named users only

    • Setting the two prefetch values to true improves usability, but uses more storage

    • Once you have the configuration you want, save it and start the container again

    • For each user, run the command

    • docker exec -it thelounge s6-setuidgid abc thelounge add <user>

    • You will be prompted to enter a password that will not be echoed.

    • Saving logs to disk is the default, this consumes more space but allows scrollback.

    • To log in to the application, browse to http://<hostip>:9000

    • You should now be prompted for a username and password on the webinterface.

    • Once logged in, you can add an IRC network. Some defaults are preset for Freenode

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + thelounge - LinuxServer.io       

    linuxserver/thelounge

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/thelounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases.
    next Next Pre-Releases.
    nightly Nightly images from commits in master.

    Application Setup

    • When the application first runs, it will populate its /config

    • Stop the container

    • Now from the host, edit /config/config.js, wherever you've mapped it

    • In most cases you want the value public: false to allow named users only

    • Setting the two prefetch values to true improves usability, but uses more storage

    • Once you have the configuration you want, save it and start the container again

    • For each user, run the command

    • docker exec -it thelounge s6-setuidgid abc thelounge add <user>

    • You will be prompted to enter a password that will not be echoed.

    • Saving logs to disk is the default, this consumes more space but allows scrollback.

    • To log in to the application, browse to http://<hostip>:9000

    • You should now be prompted for a username and password on the webinterface.

    • Once logged in, you can add an IRC network. Some defaults are preset for Freenode

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       thelounge:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9000 Application WebUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Configuration files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it thelounge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f thelounge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' thelounge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/thelounge:latest

    Versions

    • 18.12.22: - Rebasing master to alpine 3.17.
    • 24.10.22: - Fix sqlite3 build.
    • 12.04.22: - Install from source using yarn.
    • 11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 15.05.19: - Update Arm variant images to build sqlite3 module.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.08.18: - Use global install, simplifies adding users.
    • 20.08.18: - Rebase to alpine 3.8.
    • 06.01.18: - Rebase to alpine 3.7.
    • 26.05.17: - Rebase to alpine 3.6.
    • 06.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Bump to pickup 2.10 release.
    • 14.10.16: - Add version layer information.
    • 11.09.16: - Add layer badges to README.
    • 31.08.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it thelounge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f thelounge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' thelounge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/thelounge:latest

    Versions

    • 18.12.22: - Rebasing master to alpine 3.17.
    • 24.10.22: - Fix sqlite3 build.
    • 12.04.22: - Install from source using yarn.
    • 11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 15.05.19: - Update Arm variant images to build sqlite3 module.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.08.18: - Use global install, simplifies adding users.
    • 20.08.18: - Rebase to alpine 3.8.
    • 06.01.18: - Rebase to alpine 3.7.
    • 26.05.17: - Rebase to alpine 3.6.
    • 06.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Bump to pickup 2.10 release.
    • 14.10.16: - Add version layer information.
    • 11.09.16: - Add layer badges to README.
    • 31.08.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-transmission/index.html b/images/docker-transmission/index.html index 484fdfafb2..eb8f330a12 100644 --- a/images/docker-transmission/index.html +++ b/images/docker-transmission/index.html @@ -1,4 +1,4 @@ - transmission - LinuxServer.io

    linuxserver/transmission

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    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.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/transmission:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved.

    If you choose to use transmission-web-control as your default UI, just note that the origional Web UI will not be available to you despite the button being present.

    Securing the webui with a username/password.

    Use the USER and PASS variables in docker run/create/compose to set authentication. Do not manually edit the settings.json to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.

    Updating Blocklists Automatically

    This requires "blocklist-enabled": true, to be set. By setting this to true, it is assumed you have also populated blocklist-url with a valid block list.

    The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon.

    The automatic update will run once a day at 3am local server time.

    Using whitelist

    Use WHITELIST to enable a list of ip as whitelist. This enable support for rpc-whitelist. When WHITELIST is empty support for whitelist is disabled.

    Use HOST_WHITELIST to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist. When HOST_WHITELIST is empty support for host-whitelist is disabled.

    Use alternative Transmission torrent ports

    Use PEERPORT to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + transmission - LinuxServer.io       

    linuxserver/transmission

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    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.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/transmission:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved.

    If you choose to use transmission-web-control as your default UI, just note that the origional Web UI will not be available to you despite the button being present.

    Securing the webui with a username/password.

    Use the USER and PASS variables in docker run/create/compose to set authentication. Do not manually edit the settings.json to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.

    Updating Blocklists Automatically

    This requires "blocklist-enabled": true, to be set. By setting this to true, it is assumed you have also populated blocklist-url with a valid block list.

    The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon.

    The automatic update will run once a day at 3am local server time.

    Using whitelist

    Use WHITELIST to enable a list of ip as whitelist. This enable support for rpc-whitelist. When WHITELIST is empty support for whitelist is disabled.

    Use HOST_WHITELIST to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist. When HOST_WHITELIST is empty support for host-whitelist is disabled.

    Use alternative Transmission torrent ports

    Use PEERPORT to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       transmission:
    @@ -45,4 +45,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9091 WebUI
    51413 Torrent Port TCP
    51413/udp Torrent Port UDP

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    TRANSMISSION_WEB_HOME=/combustion-release/ Specify an alternative UI options are /combustion-release/, /transmission-web-control/, /kettu/, /flood-for-transmission/, and /transmissionic/.
    USER=username Specify an optional username for the interface
    PASS=password Specify an optional password for the interface
    WHITELIST=iplist Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting.
    PEERPORT=peerport Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting.
    HOST_WHITELIST=dnsname list Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting.

    Volume Mappings (-v)

    Volume Function
    /config Where transmission should store config files and logs.
    /downloads Local path for downloads.
    /watch Watch folder for torrent files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it transmission /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f transmission
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' transmission
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/transmission:latest

    Versions

    • 05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package.
    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 03.04.22: - Add Transmissionic as a UI option.
    • 21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium
    • 09.07.21: - Wait for the transmission-daemon termination after a caught sigterm.
    • 06.03.21: - Add Flood for Transmission as a UI option.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.11.20: - Add ca-certificates package to allow connecting to https trackers.
    • 02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3.
    • 11.05.20: - Remove unnecessary chmod (remnant of previous change).
    • 28.04.20: - Use transmission-remote to update blocklist.
    • 30.03.20: - Internalize blocklist-update.sh.
    • 29.03.20: - Update auth info in readme.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 04.10.19: - Update package label.
    • 21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set.
    • 19.07.19: - Send SIGTERM in blocklist update to properly close pid.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils.
    • 22.02.19: - Catch term and clean exit.
    • 07.02.19: - Add pipeline logic and multi arch.
    • 15.08.18: - Rebase to alpine linux 3.8.
    • 12.02.18: - Pull transmission from edge repo.
    • 10.01.18: - Rebase to alpine linux 3.7.
    • 25.07.17: - Add rsync package.
    • 27.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 15.01.17: - Add p7zip, tar, unrar, and unzip packages.
    • 16.10.16: - Blocklist autoupdate with optional authentication.
    • 14.10.16: - Add version layer informationE.
    • 23.09.16: - Add information about securing the webui to README.
    • 21.09.16: - Add curl package.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 09.08.16: - Rebase to alpine linux.
    • 06.12.15: - Separate mapping for watch folder.
    • 16.11.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it transmission /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f transmission
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' transmission
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/transmission:latest

    Versions

    • 05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package.
    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 03.04.22: - Add Transmissionic as a UI option.
    • 21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium
    • 09.07.21: - Wait for the transmission-daemon termination after a caught sigterm.
    • 06.03.21: - Add Flood for Transmission as a UI option.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 02.11.20: - Add ca-certificates package to allow connecting to https trackers.
    • 02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3.
    • 11.05.20: - Remove unnecessary chmod (remnant of previous change).
    • 28.04.20: - Use transmission-remote to update blocklist.
    • 30.03.20: - Internalize blocklist-update.sh.
    • 29.03.20: - Update auth info in readme.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 04.10.19: - Update package label.
    • 21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set.
    • 19.07.19: - Send SIGTERM in blocklist update to properly close pid.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils.
    • 22.02.19: - Catch term and clean exit.
    • 07.02.19: - Add pipeline logic and multi arch.
    • 15.08.18: - Rebase to alpine linux 3.8.
    • 12.02.18: - Pull transmission from edge repo.
    • 10.01.18: - Rebase to alpine linux 3.7.
    • 25.07.17: - Add rsync package.
    • 27.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 15.01.17: - Add p7zip, tar, unrar, and unzip packages.
    • 16.10.16: - Blocklist autoupdate with optional authentication.
    • 14.10.16: - Add version layer informationE.
    • 23.09.16: - Add information about securing the webui to README.
    • 21.09.16: - Add curl package.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 09.08.16: - Rebase to alpine linux.
    • 06.12.15: - Separate mapping for watch folder.
    • 16.11.15: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-tvheadend/index.html b/images/docker-tvheadend/index.html index 5826997a50..3defb1b6a4 100644 --- a/images/docker-tvheadend/index.html +++ b/images/docker-tvheadend/index.html @@ -1,4 +1,4 @@ - tvheadend - LinuxServer.io

    linuxserver/tvheadend

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tvheadend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.

    Stable

    First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services.

    After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG.

    Latest

    The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend.

    Configuring XMLTV grabber

    To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.

    docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure
    + tvheadend - LinuxServer.io       

    linuxserver/tvheadend

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/tvheadend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.

    Stable

    First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services.

    After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG.

    Latest

    The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend.

    Configuring XMLTV grabber

    To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.

    docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure
     

    Now follow the onscreen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber.

    If you allready have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it.

    Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --> Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field.

    /usr/bin/comskip --ini=/config/comskip/comskip.ini "%f"
     

    Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file.

    FFmpeg

    FFmpeg is installed in /usr/bin/ in case you need to use it with pipe.

    EPG XML file

    If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml.

    For advanced setup of tvheadend, go to [Tvheadend][appurl]

    Picons

    We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. You need to enable minimum advanced view level to see the picons options.

    Additional runtime parameters

    In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -38,4 +38,4 @@
     

    Host vs. Bridge

    If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250 and a UDP port of 1900 which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stabilty problems. These can be solved by giving tvheadend its own IP using macvlan.

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    9981 WebUI
    9982 HTSP server port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    RUN_OPTS= Optionally specify additional arguments to be passed. See Additional runtime parameters.

    Volume Mappings (-v)

    Volume Function
    /config Where TVHeadend show store it's config files.
    /recordings Where you want the PVR to store recordings.

    Device Mappings (--device)

    Parameter Function
    /dev/dri Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi).
    /dev/dvb Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tvheadend /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tvheadend
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tvheadend
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tvheadend:latest

    Versions

    • 31.08.22: - Update sample env vars and how RUN_OPTS are handled.
    • 19.08.22: - Switch to new picons builder.
    • 16.04.22: - Added URL XMLTV grabber.
    • 05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv.
    • 11.05.21: - Added Intel iHD driver support.
    • 02.06.20: - Update to Alpine 3.12.
    • 27.12.19: - Add requests and perl-json-xs package.
    • 27.12.19: - Update to Alpine 3.11.
    • 02.10.19: - Improve permission fixing on render & dvb devices.
    • 18.08.19: - Add AMD drivers.
    • 02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.03.19: - Bump xmltv to 0.6.1.
    • 28.02.19: - add perl-lwp-useragent-determined.
    • 17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.
    • 14.02.19: - Add picons path to config.
    • 15.01.19: - Add pipeline logic and multi arch.
    • 12.09.18: - Rebase to alpine 3.8 and use buildstage type build.
    • 21.04.18: - Add JSON::XS Perl package for grab_tv_huro.
    • 24.03.18: - Add dvbcsa package.
    • 04.03.18: - Use sourceforge master rather than mirror for xmltv.
    • 22.02.18: - Add lost libva-intel-driver.
    • 21.02.18: - Fix wrong version of iconv used.
    • 18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options.
    • 04.01.18: - Deprecate cpu_core routine lack of scaling.
    • 11.12.17: - Rebase to alpine 3.7, linting fixes.
    • 02.09.17: - Add codec dependencies.
    • 13.07.17: - Increase uniformity across all archs.
    • 08.07.17: - Update README with full path for comskip.
    • 02.07.17: - Move to one branch for all 4.2 releases.
    • 27.05.17: - Rebase to alpine 3.6.
    • 01.05.17: - Update to tvheadend 4.2.1 stable.
    • 18.04.17: - Use repo version of gnu-libiconv rather than compiling.
    • 09.04.17: - Chain cpanm installs in one block and use --installdeps.
    • 09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
    • 07.02.17: - Add variable to add additional runtime paramters.
    • 05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs.
    • 14.11.16: - Add picons from picons.xyz to /picons folder and add info to README.
    • 22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README.
    • 18.09.16: - Update XMLTV to 0.5.68 and update README.
    • 10.09.16: - Add layer badges to README.
    • 05.09.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it tvheadend /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f tvheadend
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' tvheadend
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/tvheadend:latest

    Versions

    • 31.08.22: - Update sample env vars and how RUN_OPTS are handled.
    • 19.08.22: - Switch to new picons builder.
    • 16.04.22: - Added URL XMLTV grabber.
    • 05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv.
    • 11.05.21: - Added Intel iHD driver support.
    • 02.06.20: - Update to Alpine 3.12.
    • 27.12.19: - Add requests and perl-json-xs package.
    • 27.12.19: - Update to Alpine 3.11.
    • 02.10.19: - Improve permission fixing on render & dvb devices.
    • 18.08.19: - Add AMD drivers.
    • 02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.03.19: - Bump xmltv to 0.6.1.
    • 28.02.19: - add perl-lwp-useragent-determined.
    • 17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.
    • 14.02.19: - Add picons path to config.
    • 15.01.19: - Add pipeline logic and multi arch.
    • 12.09.18: - Rebase to alpine 3.8 and use buildstage type build.
    • 21.04.18: - Add JSON::XS Perl package for grab_tv_huro.
    • 24.03.18: - Add dvbcsa package.
    • 04.03.18: - Use sourceforge master rather than mirror for xmltv.
    • 22.02.18: - Add lost libva-intel-driver.
    • 21.02.18: - Fix wrong version of iconv used.
    • 18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options.
    • 04.01.18: - Deprecate cpu_core routine lack of scaling.
    • 11.12.17: - Rebase to alpine 3.7, linting fixes.
    • 02.09.17: - Add codec dependencies.
    • 13.07.17: - Increase uniformity across all archs.
    • 08.07.17: - Update README with full path for comskip.
    • 02.07.17: - Move to one branch for all 4.2 releases.
    • 27.05.17: - Rebase to alpine 3.6.
    • 01.05.17: - Update to tvheadend 4.2.1 stable.
    • 18.04.17: - Use repo version of gnu-libiconv rather than compiling.
    • 09.04.17: - Chain cpanm installs in one block and use --installdeps.
    • 09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
    • 07.02.17: - Add variable to add additional runtime paramters.
    • 05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs.
    • 14.11.16: - Add picons from picons.xyz to /picons folder and add info to README.
    • 22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README.
    • 18.09.16: - Update XMLTV to 0.5.68 and update README.
    • 10.09.16: - Add layer badges to README.
    • 05.09.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-ubooquity/index.html b/images/docker-ubooquity/index.html index a73ecdc5a8..f769ce1c0b 100644 --- a/images/docker-ubooquity/index.html +++ b/images/docker-ubooquity/index.html @@ -1,4 +1,4 @@ - ubooquity - LinuxServer.io

    linuxserver/ubooquity

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ubooquity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below.

    Access the admin page at http://<your-ip>:2203/ubooquity/admin and set a password.

    Then you can access the webui at http://<your-ip>:2202/ubooquity/

    This container will automatically scan your files at startup.

    MAXMEM

    The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That’s when you get java.lang.OutOfMemoryError: Java heap space errors.

    You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB )

    If no value is set it will default to 512MB.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + ubooquity - LinuxServer.io       

    linuxserver/ubooquity

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ubooquity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below.

    Access the admin page at http://<your-ip>:2203/ubooquity/admin and set a password.

    Then you can access the webui at http://<your-ip>:2202/ubooquity/

    This container will automatically scan your files at startup.

    MAXMEM

    The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That’s when you get java.lang.OutOfMemoryError: Java heap space errors.

    You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB )

    If no value is set it will default to 512MB.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       ubooquity:
    @@ -35,4 +35,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    2202 The library port.
    2203 The admin port.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.
    MAXMEM=<maxmem> To set the maximum memory. ( ex: set '1024' for 1GB )

    Volume Mappings (-v)

    Volume Function
    /config Config files and database for ubooquity.
    /books Location of books.
    /comics Location of comics.
    /files Location of raw files.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ubooquity /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ubooquity
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ubooquity
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ubooquity:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 15.10.18: - Upgrade to Ubooquity 2.1.2.
    • 23.08.18: - Rebase to alpine 3.8.
    • 09.12.17: - Rebase to alpine 3.7.
    • 07.10.17: - Upgrade to Ubooquity 2.1.1.
    • 16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users.
    • 26.05.17: - Rebase to alpine 3.6.
    • 08.04.17: - Switch to java from 3.5 repo, fixes login crashes.
    • 06.02.17: - Rebase to alpine 3.5.
    • 06.12.16: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it ubooquity /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ubooquity
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' ubooquity
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/ubooquity:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 15.10.18: - Upgrade to Ubooquity 2.1.2.
    • 23.08.18: - Rebase to alpine 3.8.
    • 09.12.17: - Rebase to alpine 3.7.
    • 07.10.17: - Upgrade to Ubooquity 2.1.1.
    • 16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users.
    • 26.05.17: - Rebase to alpine 3.6.
    • 08.04.17: - Switch to java from 3.5 repo, fixes login crashes.
    • 06.02.17: - Rebase to alpine 3.5.
    • 06.12.16: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-unifi-controller/index.html b/images/docker-unifi-controller/index.html index a0c1389f14..eff933ea6e 100644 --- a/images/docker-unifi-controller/index.html +++ b/images/docker-unifi-controller/index.html @@ -1,4 +1,4 @@ - unifi-controller - LinuxServer.io

    linuxserver/unifi-controller

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    The webui is at https://ip:8443, setup with the first run wizard.

    For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System Settings > Controller Configuration and set the Controller Hostname/IP to a hostname or IP address accessible by your devices. Additionally the checkbox "Override inform host with controller hostname/IP" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).

    In order to manually adopt a device take these steps:

    ssh ubnt@$AP-IP
    + unifi-controller - LinuxServer.io       

    linuxserver/unifi-controller

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf

    Application Setup

    The webui is at https://ip:8443, setup with the first run wizard.

    For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System Settings > Controller Configuration and set the Controller Hostname/IP to a hostname or IP address accessible by your devices. Additionally the checkbox "Override inform host with controller hostname/IP" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).

    In order to manually adopt a device take these steps:

    ssh ubnt@$AP-IP
     set-inform http://$address:8080/inform
     

    The default device password is ubnt. $address is the IP address of the host you are running this container on and $AP-IP is the Access Point IP address.

    When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting "DHCP Gateway IP", under Settings > Networks > network_name, to a correct (and accessable) ip address.

    Strict reverse proxies

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -47,4 +47,4 @@ set-inform http://$address:8080/inform
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    8443 Unifi web admin port
    3478/udp Unifi STUN port
    10001/udp Required for AP discovery
    8080 Required for device communication
    1900/udp Required for Make controller discoverable on L2 network option
    8843 Unifi guest portal HTTPS redirect port
    8880 Unifi guest portal HTTP redirect port
    6789 For mobile throughput test
    5514/udp Remote syslog port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use (e.g. Europe/London) - see list
    MEM_LIMIT=1024 Optionally change the Java memory limit (in Megabytes). Set to default to reset to default
    MEM_STARTUP=1024 Optionally change the Java initial/minimum memory (in Megabytes). Set to default to reset to default

    Volume Mappings (-v)

    Volume Function
    /config All Unifi data stored here

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it unifi-controller /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f unifi-controller
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' unifi-controller
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/unifi-controller:latest

    Versions

    • 30.11.22: - Bump JRE to 11.
    • 01.06.22: - Deprecate armhf.
    • 23.12.21: - Move min/max memory config from run to system.properties.
    • 22.12.21: - Move deb package install to first init to avoid overlayfs performance issues.
    • 13.12.21: - Rebase 64 bit containers to Focal.
    • 11.12.21: - Add java opts to mitigate CVE-2021-44228.
    • 11.06.21: - Allow for changing Java initial mem via new optional environment variable.
    • 12.01.21: - Deprecate the LTS tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully.
    • 17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6.
    • 16.06.20: - Add logrotate.
    • 02.06.20: - Updated port list & descriptions. Moved some ports to optional.
    • 14.11.19: - Changed url for deb package to match new Ubiquity domain.
    • 29.07.19: - Allow for changing Java mem limit via new optional environment variable.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it unifi-controller /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f unifi-controller
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' unifi-controller
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/unifi-controller:latest

    Versions

    • 30.11.22: - Bump JRE to 11.
    • 01.06.22: - Deprecate armhf.
    • 23.12.21: - Move min/max memory config from run to system.properties.
    • 22.12.21: - Move deb package install to first init to avoid overlayfs performance issues.
    • 13.12.21: - Rebase 64 bit containers to Focal.
    • 11.12.21: - Add java opts to mitigate CVE-2021-44228.
    • 11.06.21: - Allow for changing Java initial mem via new optional environment variable.
    • 12.01.21: - Deprecate the LTS tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully.
    • 17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6.
    • 16.06.20: - Add logrotate.
    • 02.06.20: - Updated port list & descriptions. Moved some ports to optional.
    • 14.11.19: - Changed url for deb package to match new Ubiquity domain.
    • 29.07.19: - Allow for changing Java mem limit via new optional environment variable.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic
    \ No newline at end of file diff --git a/images/docker-webgrabplus/index.html b/images/docker-webgrabplus/index.html index 29d61e9a3f..df41f8df6a 100644 --- a/images/docker-webgrabplus/index.html +++ b/images/docker-webgrabplus/index.html @@ -1,4 +1,4 @@ - webgrabplus - LinuxServer.io

    linuxserver/webgrabplus

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/webgrabplus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To configure WebGrab+Plus follow the documentation

    Please note that depending on your host this container may not work with the no-new-privileges=true security-opt.

    Note that there are some things in the guide that does not apply to this container. Below you can find the changes.

    The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file!

    The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to.

    To adjust the scheduled cron job for grabbing, edit the wg3-cron file found in the /config folder. After you have edited the the wg3-cron file, restart the container to apply the new schedule. Do not adjust the command!

    Note that due to something in version 3, we had to change the commands for scheduling the grab. If you have a version where there is a wg-cron file in your /config mount, delete it and use wg3-cron instead.

    Below is the syntax of the cron file.

     ┌───────────── minute (0 - 59)
    + webgrabplus - LinuxServer.io       

    linuxserver/webgrabplus

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/webgrabplus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To configure WebGrab+Plus follow the documentation

    Please note that depending on your host this container may not work with the no-new-privileges=true security-opt.

    Note that there are some things in the guide that does not apply to this container. Below you can find the changes.

    The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file!

    The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to.

    To adjust the scheduled cron job for grabbing, edit the wg3-cron file found in the /config folder. After you have edited the the wg3-cron file, restart the container to apply the new schedule. Do not adjust the command!

    Note that due to something in version 3, we had to change the commands for scheduling the grab. If you have a version where there is a wg-cron file in your /config mount, delete it and use wg3-cron instead.

    Below is the syntax of the cron file.

     ┌───────────── minute (0 - 59)
      │ ┌───────────── hour (0 - 23)
      │ │ ┌───────────── day of month (1 - 31)
      │ │ │ ┌───────────── month (1 - 12)
    @@ -37,4 +37,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London

    Volume Mappings (-v)

    Volume Function
    /config Where webgrabplus should store it's config files.
    /data Where webgrabplus should store it's data files.

    Miscellaneous Options

    Parameter Function
    --hostname= Set the hostname for the container for the license check.
    --mac-address= Set the mac_address for the container for the license check.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it webgrabplus /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f webgrabplus
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' webgrabplus
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webgrabplus:latest

    Versions

    • 23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6.
    • 29.04.22: - Add hostname and mac_address arguments that are needed for the license check to compose and cli samples.
    • 23.03.22: - Rebase to Alpine 3.15.
    • 23.03.22: - Update to use dotnet instead of mono.
    • 06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable).
    • 17.12.21: - Update to version 3.2.2 beta.
    • 05.08.21: - Update to version 3.2.1 beta.
    • 05.06.21: - Added mono-devel dependency.
    • 04.06.21: - Update to version 3.1.8 beta.
    • 22.03.21: - Update to version 3.1.7 beta.
    • 07.03.21: - Update to version 3.1.6 beta.
    • 29.01.21: - Update external version number to show as 3.1.5.
    • 24.01.21: - Update to version 3.1.5 beta.
    • 22.12.20: - Update to version 3.1.4 beta.
    • 12.10.20: - Fix version number in jenkinsfile.
    • 12.10.20: - Update to version 3.1.1 beta.
    • 22.06.20: - Add mono webrequest library.
    • 18.06.20: - Update to v3.1.0.
    • 29.03.20: - Update to v3.0.0. Changed to use wg3-cron file.
    • 28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 21.03.19: - Update to beta 2.1.7.
    • 19.02.19: - Add pipeline logic and multi arch.
    • 18.01.18: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it webgrabplus /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f webgrabplus
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' webgrabplus
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webgrabplus:latest

    Versions

    • 23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6.
    • 29.04.22: - Add hostname and mac_address arguments that are needed for the license check to compose and cli samples.
    • 23.03.22: - Rebase to Alpine 3.15.
    • 23.03.22: - Update to use dotnet instead of mono.
    • 06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable).
    • 17.12.21: - Update to version 3.2.2 beta.
    • 05.08.21: - Update to version 3.2.1 beta.
    • 05.06.21: - Added mono-devel dependency.
    • 04.06.21: - Update to version 3.1.8 beta.
    • 22.03.21: - Update to version 3.1.7 beta.
    • 07.03.21: - Update to version 3.1.6 beta.
    • 29.01.21: - Update external version number to show as 3.1.5.
    • 24.01.21: - Update to version 3.1.5 beta.
    • 22.12.20: - Update to version 3.1.4 beta.
    • 12.10.20: - Fix version number in jenkinsfile.
    • 12.10.20: - Update to version 3.1.1 beta.
    • 22.06.20: - Add mono webrequest library.
    • 18.06.20: - Update to v3.1.0.
    • 29.03.20: - Update to v3.0.0. Changed to use wg3-cron file.
    • 28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 21.03.19: - Update to beta 2.1.7.
    • 19.02.19: - Add pipeline logic and multi arch.
    • 18.01.18: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-webtop/index.html b/images/docker-webtop/index.html index 0c9d173cb3..1dc042deda 100644 --- a/images/docker-webtop/index.html +++ b/images/docker-webtop/index.html @@ -1,4 +1,4 @@ - webtop - LinuxServer.io

    linuxserver/webtop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/webtop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest XFCE Alpine
    ubuntu-xfce XFCE Ubuntu
    fedora-xfce XFCE Fedora
    arch-xfce XFCE Arch
    alpine-kde KDE Alpine
    ubuntu-kde KDE Ubuntu
    fedora-kde KDE Fedora
    arch-kde KDE Arch
    alpine-mate MATE Alpine
    ubuntu-mate MATE Ubuntu
    fedora-mate MATE Fedora
    arch-mate MATE Arch
    alpine-i3 i3 Alpine
    ubuntu-i3 i3 Ubuntu
    fedora-i3 i3 Fedora
    arch-i3 i3 Arch
    alpine-openbox Openbox Alpine
    ubuntu-openbox Openbox Ubuntu
    fedora-openbox Openbox Fedora
    arch-openbox Openbox Arch
    alpine-icewm IceWM Alpine
    ubuntu-icewm IceWM Ubuntu
    fedora-icewm IceWM Fedora
    arch-icewm IceWM Arch

    Application Setup

    The Webtop can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen.

    Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

    Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from.

    The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    If you ever lose your password you can always reset it by execing into the container as root:

    docker exec -it webtop passwd abc
    + webtop - LinuxServer.io       

    linuxserver/webtop

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/webtop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest XFCE Alpine
    ubuntu-xfce XFCE Ubuntu
    fedora-xfce XFCE Fedora
    arch-xfce XFCE Arch
    alpine-kde KDE Alpine
    ubuntu-kde KDE Ubuntu
    fedora-kde KDE Fedora
    arch-kde KDE Arch
    alpine-mate MATE Alpine
    ubuntu-mate MATE Ubuntu
    fedora-mate MATE Fedora
    arch-mate MATE Arch
    alpine-i3 i3 Alpine
    ubuntu-i3 i3 Ubuntu
    fedora-i3 i3 Fedora
    arch-i3 i3 Arch
    alpine-openbox Openbox Alpine
    ubuntu-openbox Openbox Ubuntu
    fedora-openbox Openbox Fedora
    arch-openbox Openbox Arch
    alpine-icewm IceWM Alpine
    ubuntu-icewm IceWM Ubuntu
    fedora-icewm IceWM Fedora
    arch-icewm IceWM Arch

    Application Setup

    The Webtop can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen.

    Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

    Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

    Keyboard Layouts

    This should match the layout on the computer you are accessing the container from.

    The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    If you ever lose your password you can always reset it by execing into the container as root:

    docker exec -it webtop passwd abc
     
    By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.

    Hardware Acceleration (Ubuntu Container Only)

    Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.

    Intel/ATI/AMD

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri
     
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Nvidia

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    Arm Devices

    Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -43,4 +43,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Web Desktop GUI

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/
    KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.
    TITLE=Webtop String which will be used as page/tab title in the web browser.

    Volume Mappings (-v)

    Volume Function
    /config abc users home directory
    /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container

    Device Mappings (--device)

    Parameter Function
    /dev/dri Add this for GL support (Linux hosts only)

    Miscellaneous Options

    Parameter Function
    --shm-size= We set this to 1 gig to prevent modern web browsers from crashing
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it webtop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f webtop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' webtop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webtop:latest

    Versions

    • 21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3.
    • 12.03.22: - Add documentation for mounting in a GPU.
    • 05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode.
    • 21.09.21: - Add Fedora and Arch images, show seccomp settings in readme.
    • 26.09.21: - Rebase to Alpine versions to 3.14.
    • 20.04.21: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it webtop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f webtop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' webtop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/webtop:latest

    Versions

    • 21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3.
    • 12.03.22: - Add documentation for mounting in a GPU.
    • 05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode.
    • 21.09.21: - Add Fedora and Arch images, show seccomp settings in readme.
    • 26.09.21: - Rebase to Alpine versions to 3.14.
    • 20.04.21: - Initial release.
    \ No newline at end of file diff --git a/images/docker-wikijs/index.html b/images/docker-wikijs/index.html index 54a03dece6..e704825920 100644 --- a/images/docker-wikijs/index.html +++ b/images/docker-wikijs/index.html @@ -1,4 +1,4 @@ - wikijs - LinuxServer.io

    linuxserver/wikijs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Wikijs A modern, lightweight and powerful wiki app built on NodeJS.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wikijs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + wikijs - LinuxServer.io       

    linuxserver/wikijs

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Wikijs A modern, lightweight and powerful wiki app built on NodeJS.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wikijs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       wikijs:
    @@ -27,4 +27,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 Port for Wiki.js's web interface.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where Wiki.js config is stored.
    /data Where Wiki.js data is stored.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wikijs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wikijs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wikijs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wikijs:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 28.04.20: - Added python dependency for some NPM modules as well as git for storage module
    • 14.12.19: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wikijs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wikijs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wikijs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wikijs:latest

    Versions

    • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 28.04.20: - Added python dependency for some NPM modules as well as git for storage module
    • 14.12.19: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-wireguard/index.html b/images/docker-wireguard/index.html index eca8ede3c1..2abe3226bb 100644 --- a/images/docker-wireguard/index.html +++ b/images/docker-wireguard/index.html @@ -1,4 +1,4 @@ - wireguard - LinuxServer.io

    linuxserver/wireguard

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wireguard:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases with support for compiling Wireguard modules
    alpine Stable releases based on Alpine without support for compiling Wireguard modules

    Application Setup

    During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container.

    If the kernel is not built-in, or installed on host, the container will check if the kernel headers are present (in /usr/src) and if not, it will attempt to download the necessary kernel headers from the ubuntu xenial/bionic, debian/raspbian buster repos; then will attempt to compile and install the kernel module. If the kernel headers are not found in either usr/src or in the repos mentioned, container will sleep indefinitely as wireguard cannot be installed.

    If you're on a debian/ubuntu based host with a custom or downstream distro provided kernel (ie. Pop!_OS), the container won't be able to install the kernel headers from the regular ubuntu and debian repos. In those cases, you can try installing the headers on the host via sudo apt install linux-headers-$(uname -r) (if distro version) and then add a volume mapping for /usr/src:/usr/src, or if custom built, map the location of the existing headers to allow the container to use host installed headers to build the kernel module (tested successful on Pop!_OS, ymmv).

    With regards to arm32/64 devices, Raspberry Pi 2-4 running the official ubuntu images or Raspbian Buster are supported out of the box. For all other devices and OSes, you can try installing the kernel headers on the host, and mapping /usr/src:/usr/src and it may just work (no guarantees).

    This can be run as a server or a client, based on the parameters used.

    Server Mode

    If the environment variable PEERS is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log. They will also be saved in text and png format under /config/peerX in case PEERS is a variable and an integer or /config/peer_X in case a list of names was provided instead of an integer.

    Variables SERVERURL, SERVERPORT, INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.

    To add more peers/clients later on, you increment the PEERS environment variable or add more elements to the list and recreate the container.

    To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5 or docker exec -it wireguard /app/show-peer myPC myPhone myTablet (Keep in mind that the QR codes are also stored as PNGs in the config folder).

    The templates used for server and peer confs are saved under /config/templates. Advanced users can modify these templates and force conf generation by deleting /config/wg0.conf and restarting the container.

    Client Mode

    Do not set the PEERS environment variable. Drop your client conf into the config folder as /config/wg0.conf and start the container.

    If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs line in your peer/client wg0.conf to include only 0.0.0.0/0 and not ::/0; and restart the container.

    Road warriors, roaming and returning home

    If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost.

    This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally).

    Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.

    Maintaining local access to attached services

    ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.

    When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require):

    [Interface]
    + wireguard - LinuxServer.io       

    linuxserver/wireguard

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build

    WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wireguard:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Version Tags

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description
    latest Stable releases with support for compiling Wireguard modules
    alpine Stable releases based on Alpine without support for compiling Wireguard modules

    Application Setup

    During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container.

    If the kernel is not built-in, or installed on host, the container will check if the kernel headers are present (in /usr/src) and if not, it will attempt to download the necessary kernel headers from the ubuntu xenial/bionic, debian/raspbian buster repos; then will attempt to compile and install the kernel module. If the kernel headers are not found in either usr/src or in the repos mentioned, container will sleep indefinitely as wireguard cannot be installed.

    If you're on a debian/ubuntu based host with a custom or downstream distro provided kernel (ie. Pop!_OS), the container won't be able to install the kernel headers from the regular ubuntu and debian repos. In those cases, you can try installing the headers on the host via sudo apt install linux-headers-$(uname -r) (if distro version) and then add a volume mapping for /usr/src:/usr/src, or if custom built, map the location of the existing headers to allow the container to use host installed headers to build the kernel module (tested successful on Pop!_OS, ymmv).

    With regards to arm32/64 devices, Raspberry Pi 2-4 running the official ubuntu images or Raspbian Buster are supported out of the box. For all other devices and OSes, you can try installing the kernel headers on the host, and mapping /usr/src:/usr/src and it may just work (no guarantees).

    This can be run as a server or a client, based on the parameters used.

    Server Mode

    If the environment variable PEERS is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log. They will also be saved in text and png format under /config/peerX in case PEERS is a variable and an integer or /config/peer_X in case a list of names was provided instead of an integer.

    Variables SERVERURL, SERVERPORT, INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.

    To add more peers/clients later on, you increment the PEERS environment variable or add more elements to the list and recreate the container.

    To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5 or docker exec -it wireguard /app/show-peer myPC myPhone myTablet (Keep in mind that the QR codes are also stored as PNGs in the config folder).

    The templates used for server and peer confs are saved under /config/templates. Advanced users can modify these templates and force conf generation by deleting /config/wg0.conf and restarting the container.

    Client Mode

    Do not set the PEERS environment variable. Drop your client conf into the config folder as /config/wg0.conf and start the container.

    If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs line in your peer/client wg0.conf to include only 0.0.0.0/0 and not ::/0; and restart the container.

    Road warriors, roaming and returning home

    If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost.

    This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally).

    Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.

    Maintaining local access to attached services

    ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.

    When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require):

    [Interface]
     PrivateKey = <private key>
     Address = 9.8.7.6/32
     DNS = 8.8.8.8
    @@ -55,4 +55,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    51820/udp wireguard port

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London
    SERVERURL=wireguard.domain.com External IP or domain name for docker host. Used in server mode. If set to auto, the container will try to determine and set the external IP automatically
    SERVERPORT=51820 External port for docker host. Used in server mode.
    PEERS=1 Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet (alphanumeric only)
    PEERDNS=auto DNS server set in peer/client configs (can be set as 8.8.8.8). Used in server mode. Defaults to auto, which uses wireguard docker host's DNS via included CoreDNS forward.
    INTERNAL_SUBNET=10.13.13.0 Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode.
    ALLOWEDIPS=0.0.0.0/0 The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1.
    LOG_CONFS=true Generated QR codes will be displayed in the docker log. Set to false to skip log output.

    Volume Mappings (-v)

    Volume Function
    /config Contains all relevant configuration files.
    /lib/modules Maps host's modules folder. Only required if compiling wireguard modules.

    Miscellaneous Options

    Parameter Function
    --sysctl= Required for client mode.

    Portainer notice

    {% hint style="warning" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wireguard /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wireguard
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wireguard
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wireguard:latest

    Versions

    • 26.10.22: - Better handle unsupported peer names. Improve logging.
    • 12.10.22: - Add Alpine branch. Optimize wg and coredns services.
    • 09.10.22: - Switch back to iptables-legacy due to issues on some hosts.
    • 04.10.22: - Rebase to Jammy. Upgrade to s6v3.
    • 16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present.
    • 23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes.
    • 10.04.22: - Rebase to Ubuntu Focal. Add LOG_CONFS env var. Remove deprecated add-peer command.
    • 28.10.21: - Add site-to-site vpn support.
    • 11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating.
    • 06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode.
    • 04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete /config/templates/peer.conf and restart
    • 27.09.20: - Cleaning service binding example to have accurate PreDown script.
    • 06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs.
    • 29.07.20: - Update Coredns config to detect dns loops (existing users need to delete /config/coredns/Corefile and restart).
    • 27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete /config/coredns/Corefile and restart).
    • 05.07.20: - Add Debian updates and security repos for headers.
    • 25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives.
    • 19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs.
    • 29.05.20: - Add support for 64bit raspbian.
    • 28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64).
    • 20.04.20: - Fix typo in client mode conf existence check.
    • 13.04.20: - Fix bug that forced conf recreation on every start.
    • 08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for PEERDNS=auto setting. Update the add-peer/show-peer scripts to utilize the templates and the INTERNAL_SUBNET var (previously missed, oops).
    • 05.04.20: - Add INTERNAL_SUBNET variable to prevent subnet clashes. Add templates for server and peer confs.
    • 01.04.20: - Add show-peer script and include info on host installed headers.
    • 31.03.20: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wireguard /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wireguard
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wireguard
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wireguard:latest

    Versions

    • 26.10.22: - Better handle unsupported peer names. Improve logging.
    • 12.10.22: - Add Alpine branch. Optimize wg and coredns services.
    • 09.10.22: - Switch back to iptables-legacy due to issues on some hosts.
    • 04.10.22: - Rebase to Jammy. Upgrade to s6v3.
    • 16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present.
    • 23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes.
    • 10.04.22: - Rebase to Ubuntu Focal. Add LOG_CONFS env var. Remove deprecated add-peer command.
    • 28.10.21: - Add site-to-site vpn support.
    • 11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating.
    • 06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode.
    • 04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete /config/templates/peer.conf and restart
    • 27.09.20: - Cleaning service binding example to have accurate PreDown script.
    • 06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs.
    • 29.07.20: - Update Coredns config to detect dns loops (existing users need to delete /config/coredns/Corefile and restart).
    • 27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete /config/coredns/Corefile and restart).
    • 05.07.20: - Add Debian updates and security repos for headers.
    • 25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives.
    • 19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs.
    • 29.05.20: - Add support for 64bit raspbian.
    • 28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64).
    • 20.04.20: - Fix typo in client mode conf existence check.
    • 13.04.20: - Fix bug that forced conf recreation on every start.
    • 08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for PEERDNS=auto setting. Update the add-peer/show-peer scripts to utilize the templates and the INTERNAL_SUBNET var (previously missed, oops).
    • 05.04.20: - Add INTERNAL_SUBNET variable to prevent subnet clashes. Add templates for server and peer confs.
    • 01.04.20: - Add show-peer script and include info on host installed headers.
    • 31.03.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-wireshark/index.html b/images/docker-wireshark/index.html index 14520f7d7b..271ab3c397 100644 --- a/images/docker-wireshark/index.html +++ b/images/docker-wireshark/index.html @@ -1,4 +1,4 @@ - wireshark - LinuxServer.io

    linuxserver/wireshark

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Wireshark is the world’s foremost and widely-used network protocol analyzer. It lets you see what’s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wireshark:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    In order to dump from an interface you will need to pass NET_ADMIN at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from.

    If you do not specificy host networking you will need to map port 3000 with -p 3000:3000.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + wireshark - LinuxServer.io       

    linuxserver/wireshark

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Wireshark is the world’s foremost and widely-used network protocol analyzer. It lets you see what’s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/wireshark:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    In order to dump from an interface you will need to pass NET_ADMIN at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from.

    If you do not specificy host networking you will need to map port 3000 with -p 3000:3000.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       wireshark:
    @@ -33,4 +33,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    3000 WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic.

    Networking (--net)

    Parameter Function
    --net=host Use Host Networking

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Users home directory in the container, stores program settings and potentially dump files.

    Miscellaneous Options

    Parameter Function
    --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.

    Portainer notice

    {% hint style="warning" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wireshark /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wireshark
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wireshark
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wireshark:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 14.02.22: - Rebase to Alpine.
    • 31.03.20: - Initial release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it wireshark /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f wireshark
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' wireshark
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/wireshark:latest

    Versions

    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 14.02.22: - Rebase to Alpine.
    • 31.03.20: - Initial release.
    \ No newline at end of file diff --git a/images/docker-xbackbone/index.html b/images/docker-xbackbone/index.html index e34fe64b65..7b34531943 100644 --- a/images/docker-xbackbone/index.html +++ b/images/docker-xbackbone/index.html @@ -1,4 +1,4 @@ - xbackbone - LinuxServer.io

    linuxserver/xbackbone

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/xbackbone:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the WebUI at \:80/443. Follow the installation wizard. For more information, check out XBackBone.

    If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini

    Example:

      upload_max_filesize = 25M
    + xbackbone - LinuxServer.io       

    linuxserver/xbackbone

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/xbackbone:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    Access the WebUI at \:80/443. Follow the installation wizard. For more information, check out XBackBone.

    If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini

    Example:

      upload_max_filesize = 25M
       post_max_size = 25M
     

    For reverse proxying, remember to change the base_url in /config/www/xbackbone/config.php to your domain if you initially set up the application with a local url. E.g. 'base_url' => 'https://images.yourdomain.com',

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
    @@ -29,4 +29,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    80 http gui
    443 https gui

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/Oslo Timezone (i.e., Europe/Oslo)

    Volume Mappings (-v)

    Volume Function
    /config config directory volume mapping

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it xbackbone /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f xbackbone
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' xbackbone
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/xbackbone:latest

    Versions

    • 04.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 02.08.22: - Added note about updating.
    • 06.06.21: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it xbackbone /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f xbackbone
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' xbackbone
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/xbackbone:latest

    Versions

    • 04.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 02.08.22: - Added note about updating.
    • 06.06.21: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-yq/index.html b/images/docker-yq/index.html index c2a3a027c2..6f060895c6 100644 --- a/images/docker-yq/index.html +++ b/images/docker-yq/index.html @@ -1,4 +1,4 @@ - yq - LinuxServer.io

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring:

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget

    linuxserver/yq

    GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry MicroBadger Layers Docker Pulls Docker Stars Jenkins Build

    yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq, jq, and xq.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/yq should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Docker cli

    docker run --rm \
    + yq - LinuxServer.io       

    linuxserver.io

    Blog Discord Discourse Fleet GitHub Open Collective

    The LinuxServer.io team brings you another container release featuring:

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget

    linuxserver/yq

    GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry MicroBadger Layers Docker Pulls Docker Stars Jenkins Build

    yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq, jq, and xq.

    Supported Architectures

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/yq should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag
    x86-64 amd64-latest
    arm64 arm64v8-latest
    armhf arm32v7-latest

    Usage

    Docker cli

    docker run --rm \
       -v "$PWD:$PWD" \
       -w="$PWD" \
       --entrypoint yq \
    @@ -29,4 +29,4 @@ docker build \
       --pull \
       -t linuxserver/yq:latest .
     

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset
    -

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 19.09.22: - Rebase to 3.17.
    • 19.09.22: - Rebase to 3.15.
    • 18.05.21: - Rebase to 3.13. add linuxserver wheel repo.
    • 09.10.20: - Fix run scripts evaluating $ in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands.
    • 07.10.20: - Initial Release.
    \ No newline at end of file +

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    Versions

    • 19.09.22: - Rebase to 3.17.
    • 19.09.22: - Rebase to 3.15.
    • 18.05.21: - Rebase to 3.13. add linuxserver wheel repo.
    • 09.10.20: - Fix run scripts evaluating $ in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands.
    • 07.10.20: - Initial Release.
    \ No newline at end of file diff --git a/images/docker-znc/index.html b/images/docker-znc/index.html index 88d033dccd..ebcadbdae2 100644 --- a/images/docker-znc/index.html +++ b/images/docker-znc/index.html @@ -1,4 +1,4 @@ - znc - LinuxServer.io

    linuxserver/znc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/znc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To log in to the application, browse to http://:6501.

    • Default User: admin
    • Default Password: admin change password ASAP.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
    + znc - LinuxServer.io       

    linuxserver/znc

    Scarf.io pulls GitHub Stars GitHub Release GitHub Package Repository GitLab Container Registry Quay.io Docker Pulls Docker Stars Jenkins Build LSIO CI

    Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.

    Supported Architectures

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/znc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag
    x86-64 amd64-\<version tag>
    arm64 arm64v8-\<version tag>
    armhf arm32v7-\<version tag>

    Application Setup

    To log in to the application, browse to http://:6501.

    • Default User: admin
    • Default Password: admin change password ASAP.

    Usage

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    ---
     version: "2.1"
     services:
       znc:
    @@ -25,4 +25,4 @@
     

    Parameters

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Ports (-p)

    Parameter Function
    6501 Port ZNC listens on.

    Environment Variables (-e)

    Env Function
    PUID=1000 for UserID - see below for explanation
    PGID=1000 for GroupID - see below for explanation
    TZ=Europe/London Specify a timezone to use EG Europe/London.

    Volume Mappings (-v)

    Volume Function
    /config Where local ZNC data is stored.

    Miscellaneous Options

    Parameter Function

    Environment variables from files (Docker secrets)

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword
     

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    Umask for running applications

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    User / Group Identifiers

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username
         uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
    -

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it znc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f znc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' znc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/znc:latest

    Versions

    • 19.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 02.11.19: - Add znc-palaver module.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 31.01.19: - Add pipeline logic and multi arch.
    • 30.01.19: - Add push and clientbuffer modules.
    • 17.08.18: - Rebase to alpine 3.8, use buildstage.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 07.12.17: - Rebase alpine linux 3.7.
    • 25.10.17: - Remove debug switch from run command.
    • 26.05.17: - Rebase alpine linux 3.6.
    • 06.02.17: - Rebase alpine linux 3.5.
    • 19.01.17: - Add playback module.
    • 07.01.17: - Add ca-certificates package, resolve sasl issues.
    • 07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 11.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 20.08.16: - Rebase to alpine linux, move to main repository.
    • 11.12.15: - Initial Release.
    \ No newline at end of file +

    Docker Mods

    Docker Mods Docker Universal Mods

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    Support Info

    • Shell access whilst the container is running:
    • docker exec -it znc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f znc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' znc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/znc:latest

    Versions

    • 19.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 02.11.19: - Add znc-palaver module.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 31.01.19: - Add pipeline logic and multi arch.
    • 30.01.19: - Add push and clientbuffer modules.
    • 17.08.18: - Rebase to alpine 3.8, use buildstage.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 07.12.17: - Rebase alpine linux 3.7.
    • 25.10.17: - Remove debug switch from run command.
    • 26.05.17: - Rebase alpine linux 3.6.
    • 06.02.17: - Rebase alpine linux 3.5.
    • 19.01.17: - Add playback module.
    • 07.01.17: - Add ca-certificates package, resolve sasl issues.
    • 07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 11.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 20.08.16: - Rebase to alpine linux, move to main repository.
    • 11.12.15: - Initial Release.
    \ No newline at end of file diff --git a/images/index.html b/images/index.html index 05816bbb3b..8d1ee7f0eb 100644 --- a/images/index.html +++ b/images/index.html @@ -1 +1 @@ - Images - LinuxServer.io

    Images

    Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.

    \ No newline at end of file + Images - LinuxServer.io

    Images

    Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.

    \ No newline at end of file diff --git a/index.html b/index.html index 9fc0ddae99..c067ee9f70 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ - LinuxServer.io

    Introduction

    Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information in order to help our users get started. As well as individual set up guides for each of our images, there is also general information pertaining to the running of Docker containers, and best practices.

    Want to get hold of the team?

    The team resides primarily in our Discord server. We also have a forum if chat isn't your thing.

    Where Link
    Discord https://discord.gg/YWrKVTn
    Forum https://discourse.linuxserver.io

    For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/

    \ No newline at end of file + LinuxServer.io

    Introduction

    Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information in order to help our users get started. As well as individual set up guides for each of our images, there is also general information pertaining to the running of Docker containers, and best practices.

    Want to get hold of the team?

    The team resides primarily in our Discord server. We also have a forum if chat isn't your thing.

    Where Link
    Discord https://discord.gg/YWrKVTn
    Forum https://discourse.linuxserver.io

    For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/

    \ No newline at end of file diff --git a/misc/finances/index.html b/misc/finances/index.html index 3a5134a854..c1da993a64 100644 --- a/misc/finances/index.html +++ b/misc/finances/index.html @@ -1 +1 @@ - Finances - LinuxServer.io

    Finances

    • v0.1 Beta (Work in progress)
    • Created 2021-08-18
    • Updated 2021-08-18

    Charter

    We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.

    Annual Expenses

    • DigitalOcean yearly costs (currently paid for) $1200
    • AWS ~$200
    • Contabo hosting $287.76
    • Email Hosting $20
    • Various domains ~$150
    • Docker Pro Plan $60
    • Various licenses ~$150

    Votes

    In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.

    Acceptable uses of money

    • Hardware/Software needed to help the group reach a specific goal
    • Stationary + Related items for possible Conventions
    • Convention Fees (Both Attendence and Travel)
    • Hosting services (Included domain purchases)
    • Good will gestures (Example: For users outside the group that have provided help when asked)
    • Food/Drink for LinuxServer.io focused sprints.
    • Donations to upstream projects
    \ No newline at end of file + Finances - LinuxServer.io

    Finances

    • v0.1 Beta (Work in progress)
    • Created 2021-08-18
    • Updated 2021-08-18

    Charter

    We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.

    Annual Expenses

    • DigitalOcean yearly costs (currently paid for) $1200
    • AWS ~$200
    • Contabo hosting $287.76
    • Email Hosting $20
    • Various domains ~$150
    • Docker Pro Plan $60
    • Various licenses ~$150

    Votes

    In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.

    Acceptable uses of money

    • Hardware/Software needed to help the group reach a specific goal
    • Stationary + Related items for possible Conventions
    • Convention Fees (Both Attendence and Travel)
    • Hosting services (Included domain purchases)
    • Good will gestures (Example: For users outside the group that have provided help when asked)
    • Food/Drink for LinuxServer.io focused sprints.
    • Donations to upstream projects
    \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index b1d45b7b5c..1e7a3a33cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ mkdocs-awesome-pages-plugin==2.8.0 -mkdocs-material==8.5.11 +mkdocs-material==9.0.3 mkdocs-minify-plugin==0.6.2 mkdocs-redirects==1.2.0 diff --git a/search/search_index.json b/search/search_index.json index f8a7498bb7..8fbc6fd8c9 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information in order to help our users get started. As well as individual set up guides for each of our images, there is also general information pertaining to the running of Docker containers, and best practices. Want to get hold of the team? The team resides primarily in our Discord server. We also have a forum if chat isn't your thing. Where Link Discord https://discord.gg/YWrKVTn Forum https://discourse.linuxserver.io For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/","title":"Introduction"},{"location":"#introduction","text":"Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information in order to help our users get started. As well as individual set up guides for each of our images, there is also general information pertaining to the running of Docker containers, and best practices.","title":"Introduction"},{"location":"#want-to-get-hold-of-the-team","text":"The team resides primarily in our Discord server. We also have a forum if chat isn't your thing. Where Link Discord https://discord.gg/YWrKVTn Forum https://discourse.linuxserver.io For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/","title":"Want to get hold of the team?"},{"location":"FAQ/","text":"FAQ Here will some Frequently Asked Questions reside My host is incompatible with images based on Ubuntu Jammy Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy. Symptoms If your host is affected you may see errors in your containers such as: ERROR - Unable to determine java version; make sure Java is installed and callable Or Failed to create CoreCLR, HRESULT: 0x80070008 Or WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread Resolution Option 1 (Long-Term Fix) Upgrade your Docker engine install to at least version 20.10.10 . Refer to the official Docker docs for installation/update details. Option 2 (Short-Term Fix) For Docker CLI, run your container with: --security-opt seccomp=unconfined For Docker Compose, run your container with: security_opt : - seccomp=unconfined My host is incompatible with images based on rdesktop Some x86_64 hosts have issues running rdesktop based images even with the latest docker version due to syscalls that are unknown to docker. Symptoms If your host is affected you may see errors in your containers such as: Failed to close file descriptor for child process (Operation not permitted) Resolution For Docker CLI, run your container with: --security-opt seccomp=unconfined For Docker Compose, run your container with: security_opt : - seccomp=unconfined My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later This only affects 32 bit installs of distros based on Debian Buster. This is due to a bug in the libseccomp2 library (dependency of Docker itself), which is fixed. However it's not pushed to all the repositories. A GitHub issue tracking this You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3). Resolution If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed. If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, refer to the official Docker docs for installation. Option 1 Manually install an updated version of the library with dpkg. wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb {% hint style=\"info\" %} This url may have been updated. Find the latest by browsing here . Option 2 Add the backports repo for DebianBuster. As seen here . sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138 echo \"deb http://deb.debian.org/debian buster-backports main\" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list sudo apt update sudo apt install -t buster-backports libseccomp2 Option 3 Reinstall/update your OS to a version that still gets updates. Any distro based on DebianStretch does not seem to have this package available DebianBuster based distros can get the package trough backports, as outlined in point 2. {% hint style=\"info\" %} RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel Symptoms 502 errors in Jellyfin as seen in linuxserver/docker-jellyfin#71 Error starting framework core messages in the docker log for Plex . linuxserver/docker-plex#247 No WebUI for Radarr , even though the container is running. linuxserver/docker-radarr#118 Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to error getting time:crypto/asn1/a_time.c:330 docker exec date returns 1970 I want to reverse proxy a application which defaults to https with a selfsigned certificate Traefik In this example we will configure a serverTransport rule we can apply to a service, as well as telling Traefik to use https on the backend for the service. Create a ServerTransport in your dynamic Traefik configuration, we are calling ours ignorecert . http: serversTransports: ignorecert: insecureSkipVerify: true Then on our foo service we tell it to use this rule, as well as telling Traefik the backend is running on https. - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert - traefik.http.services.foo.loadbalancer.server.scheme=https","title":"FAQ"},{"location":"FAQ/#faq","text":"Here will some Frequently Asked Questions reside","title":"FAQ"},{"location":"FAQ/#jammy","text":"Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy. Symptoms If your host is affected you may see errors in your containers such as: ERROR - Unable to determine java version; make sure Java is installed and callable Or Failed to create CoreCLR, HRESULT: 0x80070008 Or WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread Resolution Option 1 (Long-Term Fix) Upgrade your Docker engine install to at least version 20.10.10 . Refer to the official Docker docs for installation/update details. Option 2 (Short-Term Fix) For Docker CLI, run your container with: --security-opt seccomp=unconfined For Docker Compose, run your container with: security_opt : - seccomp=unconfined","title":"My host is incompatible with images based on Ubuntu Jammy"},{"location":"FAQ/#rdesktop","text":"Some x86_64 hosts have issues running rdesktop based images even with the latest docker version due to syscalls that are unknown to docker. Symptoms If your host is affected you may see errors in your containers such as: Failed to close file descriptor for child process (Operation not permitted) Resolution For Docker CLI, run your container with: --security-opt seccomp=unconfined For Docker Compose, run your container with: security_opt : - seccomp=unconfined","title":"My host is incompatible with images based on rdesktop"},{"location":"FAQ/#libseccomp","text":"This only affects 32 bit installs of distros based on Debian Buster. This is due to a bug in the libseccomp2 library (dependency of Docker itself), which is fixed. However it's not pushed to all the repositories. A GitHub issue tracking this You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3). Resolution If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed. If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, refer to the official Docker docs for installation. Option 1 Manually install an updated version of the library with dpkg. wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb {% hint style=\"info\" %} This url may have been updated. Find the latest by browsing here . Option 2 Add the backports repo for DebianBuster. As seen here . sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138 echo \"deb http://deb.debian.org/debian buster-backports main\" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list sudo apt update sudo apt install -t buster-backports libseccomp2 Option 3 Reinstall/update your OS to a version that still gets updates. Any distro based on DebianStretch does not seem to have this package available DebianBuster based distros can get the package trough backports, as outlined in point 2. {% hint style=\"info\" %} RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel Symptoms 502 errors in Jellyfin as seen in linuxserver/docker-jellyfin#71 Error starting framework core messages in the docker log for Plex . linuxserver/docker-plex#247 No WebUI for Radarr , even though the container is running. linuxserver/docker-radarr#118 Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to error getting time:crypto/asn1/a_time.c:330 docker exec date returns 1970","title":"My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later"},{"location":"FAQ/#strict-proxy","text":"","title":"I want to reverse proxy a application which defaults to https with a selfsigned certificate"},{"location":"FAQ/#strict-proxy-traefik","text":"In this example we will configure a serverTransport rule we can apply to a service, as well as telling Traefik to use https on the backend for the service. Create a ServerTransport in your dynamic Traefik configuration, we are calling ours ignorecert . http: serversTransports: ignorecert: insecureSkipVerify: true Then on our foo service we tell it to use this rule, as well as telling Traefik the backend is running on https. - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert - traefik.http.services.foo.loadbalancer.server.scheme=https","title":"Traefik"},{"location":"general/awesome-lsio/","text":"Awesome LSIO Administration Container Description doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012). netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags. netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations. openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster. Audiobooks Container Description booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of Automation Container Description domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. kanzi kanzi , formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon. Backup Container Description duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others. resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes. rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\" syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet. Books Container Description calibre calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts. calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. cops cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork. mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL. readarr readarr - Book Manager and Automation (Sonarr for Ebooks) ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer. Cloud Container Description nextcloud nextcloud gives you access to all your files wherever you are. Crypto Container Description gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose. nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account. nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. DNS Container Description adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances. ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways. duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence. Dashboard Container Description heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. muximux muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps. Databases Container Description mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL. mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite. Docker Container Description docker-compose No description fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories. Documents Container Description libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\" Downloaders Container Description deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client. nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast. nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. qbittorrent The qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction. transmission 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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more. FTP Container Description davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow. filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface. Family Container Description babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work. File Sharing Container Description projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files. pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV. pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture. snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support. Finance Container Description budge budge is an open source 'budgeting with envelopes' personal finance app. Games Container Description emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS. minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like. Graphics Container Description blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready. IRC Container Description limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot. ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd. pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time. quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here. thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server. znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC. Indexers Container Description jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps. nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all). Media Management Container Description bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. radarr radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato. sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. Media Players Container Description emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster. Media Requesters Container Description doplarr doplarr is an *arr request bot for Discord.\" ombi ombi allows you to host your own Plex Request and user management system. overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem. Media Tools Container Description embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff. ffmpeg No description htpcmanager htpcmanager is a front end for many htpc related applications. minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards. oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client. synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are. tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server. tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels. Monitor Container Description apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API. healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface. librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis . syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools. Music Container Description airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source. beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools. daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole. lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone. Network Container Description unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance. wireshark Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998. Photos Container Description chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions. darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them. digikam digiKam : Professional Photo Management with the Power of Open Source lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\" photoshow photoshow is gallery software at its easiest, it doesn't even require a database. piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. pixapop pixapop is an open-source single page application to view your photos in the easiest way possible. Programming Container Description cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins. code-server code-server is VS Code running on a remote server, accessible through the browser. openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project. RSS Container Description freshrss freshrss is a free, self-hostable aggregator for rss feeds. Recipes Container Description grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility. Remote Container Description guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends. rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP. remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported. webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. Science Container Description boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications. foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics. Storage Container Description diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems. qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat. scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze. Tools Container Description yq No description VPN Container Description wireguard WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry. Web Container Description firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. grav grav is a Fast, Simple, and Flexible, file-based Web-platform. nginx nginx is a simple webserver with php support. The config files reside in /config for easy user customization. swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention. Wiki Container Description bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. hedgedoc HedgeDoc gives you access to all your files wherever you are. raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS.","title":"Awesome LSIO"},{"location":"general/awesome-lsio/#awesome-lsio","text":"","title":"Awesome LSIO"},{"location":"general/awesome-lsio/#administration","text":"Container Description doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012). netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags. netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations. openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.","title":"Administration"},{"location":"general/awesome-lsio/#audiobooks","text":"Container Description booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of","title":"Audiobooks"},{"location":"general/awesome-lsio/#automation","text":"Container Description domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. kanzi kanzi , formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.","title":"Automation"},{"location":"general/awesome-lsio/#backup","text":"Container Description duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others. resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes. rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\" syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.","title":"Backup"},{"location":"general/awesome-lsio/#books","text":"Container Description calibre calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts. calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. cops cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork. mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL. readarr readarr - Book Manager and Automation (Sonarr for Ebooks) ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.","title":"Books"},{"location":"general/awesome-lsio/#cloud","text":"Container Description nextcloud nextcloud gives you access to all your files wherever you are.","title":"Cloud"},{"location":"general/awesome-lsio/#crypto","text":"Container Description gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose. nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account. nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.","title":"Crypto"},{"location":"general/awesome-lsio/#dns","text":"Container Description adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances. ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways. duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.","title":"DNS"},{"location":"general/awesome-lsio/#dashboard","text":"Container Description heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. muximux muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.","title":"Dashboard"},{"location":"general/awesome-lsio/#databases","text":"Container Description mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL. mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.","title":"Databases"},{"location":"general/awesome-lsio/#docker","text":"Container Description docker-compose No description fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.","title":"Docker"},{"location":"general/awesome-lsio/#documents","text":"Container Description libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\"","title":"Documents"},{"location":"general/awesome-lsio/#downloaders","text":"Container Description deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client. nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast. nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. qbittorrent The qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction. transmission 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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.","title":"Downloaders"},{"location":"general/awesome-lsio/#ftp","text":"Container Description davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow. filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.","title":"FTP"},{"location":"general/awesome-lsio/#family","text":"Container Description babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.","title":"Family"},{"location":"general/awesome-lsio/#file-sharing","text":"Container Description projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files. pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV. pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture. snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.","title":"File Sharing"},{"location":"general/awesome-lsio/#finance","text":"Container Description budge budge is an open source 'budgeting with envelopes' personal finance app.","title":"Finance"},{"location":"general/awesome-lsio/#games","text":"Container Description emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS. minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.","title":"Games"},{"location":"general/awesome-lsio/#graphics","text":"Container Description blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.","title":"Graphics"},{"location":"general/awesome-lsio/#irc","text":"Container Description limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot. ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd. pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time. quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here. thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server. znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.","title":"IRC"},{"location":"general/awesome-lsio/#indexers","text":"Container Description jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps. nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).","title":"Indexers"},{"location":"general/awesome-lsio/#media-management","text":"Container Description bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. radarr radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato. sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.","title":"Media Management"},{"location":"general/awesome-lsio/#media-players","text":"Container Description emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.","title":"Media Players"},{"location":"general/awesome-lsio/#media-requesters","text":"Container Description doplarr doplarr is an *arr request bot for Discord.\" ombi ombi allows you to host your own Plex Request and user management system. overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.","title":"Media Requesters"},{"location":"general/awesome-lsio/#media-tools","text":"Container Description embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff. ffmpeg No description htpcmanager htpcmanager is a front end for many htpc related applications. minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards. oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client. synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are. tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server. tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.","title":"Media Tools"},{"location":"general/awesome-lsio/#monitor","text":"Container Description apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API. healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface. librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis . syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.","title":"Monitor"},{"location":"general/awesome-lsio/#music","text":"Container Description airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source. beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools. daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole. lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.","title":"Music"},{"location":"general/awesome-lsio/#network","text":"Container Description unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance. wireshark Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.","title":"Network"},{"location":"general/awesome-lsio/#photos","text":"Container Description chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions. darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them. digikam digiKam : Professional Photo Management with the Power of Open Source lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\" photoshow photoshow is gallery software at its easiest, it doesn't even require a database. piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. pixapop pixapop is an open-source single page application to view your photos in the easiest way possible.","title":"Photos"},{"location":"general/awesome-lsio/#programming","text":"Container Description cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins. code-server code-server is VS Code running on a remote server, accessible through the browser. openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.","title":"Programming"},{"location":"general/awesome-lsio/#rss","text":"Container Description freshrss freshrss is a free, self-hostable aggregator for rss feeds.","title":"RSS"},{"location":"general/awesome-lsio/#recipes","text":"Container Description grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.","title":"Recipes"},{"location":"general/awesome-lsio/#remote","text":"Container Description guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends. rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP. remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported. webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.","title":"Remote"},{"location":"general/awesome-lsio/#science","text":"Container Description boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications. foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.","title":"Science"},{"location":"general/awesome-lsio/#storage","text":"Container Description diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems. qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat. scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.","title":"Storage"},{"location":"general/awesome-lsio/#tools","text":"Container Description yq No description","title":"Tools"},{"location":"general/awesome-lsio/#vpn","text":"Container Description wireguard WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.","title":"VPN"},{"location":"general/awesome-lsio/#web","text":"Container Description firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. grav grav is a Fast, Simple, and Flexible, file-based Web-platform. nginx nginx is a simple webserver with php support. The config files reside in /config for easy user customization. swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.","title":"Web"},{"location":"general/awesome-lsio/#wiki","text":"Container Description bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. hedgedoc HedgeDoc gives you access to all your files wherever you are. raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS.","title":"Wiki"},{"location":"general/container-customization/","text":"Customizing LinuxServer Containers One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves. Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance. Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools: Private Custom Scripts Private Custom Services Public Facing Docker Mods All of the functionality described in this post is live on every one of the containers we currently maintain: https://fleet.linuxserver.io NOTE: While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support. Custom Scripts The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins. Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or services : bar : volumes : - /home/foo/appdata/bar:/config - /home/foo/appdata/my-custom-files:/custom-cont-init.d:ro if using compose. Where possible, to improve security, we recommend mounting them read-only ( :ro ) so that container processes cannot write to the location. One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go. #!/bin/bash echo \"**** installing ffmpeg ****\" apk add --no-cache ffmpeg NOTE: The folder /custom-cont-init.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder. Custom Services There might also be a need to run an additional service in a container alongside what we already package. Similarly to the custom scripts, just create a new directory at /custom-services.d . The files in this directory should be named after the service they will be running. Similar to with custom scripts you will need to mount this folder like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-services:/custom-services.d if using the Docker CLI or services : bar : volumes : - /home/foo/appdata/bar:/config - /home/foo/appdata/my-custom-services:/custom-services.d:ro if using compose. Where possible, to improve security, we recommend mounting them read-only ( :ro ) so that container processes cannot write to the location. Running cron in our containers is now as simple as a single file. Drop this script in /custom-services.d/cron and it will run automatically in the container: #!/usr/bin/with-contenv bash /usr/sbin/crond -f -S -l 0 -c /etc/crontabs NOTE: With this example, you will most likely need to have cron installed via a custom script using the technique in the previous section, and will need to populate the crontab. NOTE: The folder /custom-services.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder. Docker Mods In most cases if you needed to write some kind of custom logic to get a plugin to work or to use some kind of popular external service you will not be the only one that finds this logic useful. If you would like to publish and support your hard work we provide a system for a user to pass a single environment variable to the container to ingest your custom modifications. We consume Mods from Dockerhub and in order to publish one following our guide, you only need a Github Account and a Dockerhub account. (Our guide and example code can be found here) Essentially it is a system that stashes a tarball of scripts and any other files you need in an image layer on Dockerhub. When we spin up the container we will download this tarball and extract it to /. This allows community members to publish a relatively static pile of logic that will always be applied to an end user's up to date Linuxserver.io container. An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container: docker create \\ --name = transmission \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e DOCKER_MODS = taisun/config-mods:pia \\ -e PIAUSER = pmyuser \\ -e PIAPASS = mypassword \\ -e PIAENDPOINT = \"US New York City\" \\ -e TZ = US/Eastern \\ -p 9091 :9091 \\ -p 51413 :51413 \\ -p 51413 :51413/udp \\ -v path to data:/config \\ -v path to downloads:/downloads \\ -v path to watch folder:/watch \\ --restart unless-stopped \\ linuxserver/transmission The source code for this mod can be found here . NOTE: When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control. We are here to help If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out. Our Discord server is best for quick direct contact and our Forum for a longer running project. There is zero barrier to entry for these levels of container customization and you are in complete control. We are looking forward to your next creation.","title":"Customizing LinuxServer Containers"},{"location":"general/container-customization/#customizing-linuxserver-containers","text":"One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves. Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance. Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools: Private Custom Scripts Private Custom Services Public Facing Docker Mods All of the functionality described in this post is live on every one of the containers we currently maintain: https://fleet.linuxserver.io NOTE: While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support.","title":"Customizing LinuxServer Containers"},{"location":"general/container-customization/#custom-scripts","text":"The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins. Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or services : bar : volumes : - /home/foo/appdata/bar:/config - /home/foo/appdata/my-custom-files:/custom-cont-init.d:ro if using compose. Where possible, to improve security, we recommend mounting them read-only ( :ro ) so that container processes cannot write to the location. One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go. #!/bin/bash echo \"**** installing ffmpeg ****\" apk add --no-cache ffmpeg NOTE: The folder /custom-cont-init.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.","title":"Custom Scripts"},{"location":"general/container-customization/#custom-services","text":"There might also be a need to run an additional service in a container alongside what we already package. Similarly to the custom scripts, just create a new directory at /custom-services.d . The files in this directory should be named after the service they will be running. Similar to with custom scripts you will need to mount this folder like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-services:/custom-services.d if using the Docker CLI or services : bar : volumes : - /home/foo/appdata/bar:/config - /home/foo/appdata/my-custom-services:/custom-services.d:ro if using compose. Where possible, to improve security, we recommend mounting them read-only ( :ro ) so that container processes cannot write to the location. Running cron in our containers is now as simple as a single file. Drop this script in /custom-services.d/cron and it will run automatically in the container: #!/usr/bin/with-contenv bash /usr/sbin/crond -f -S -l 0 -c /etc/crontabs NOTE: With this example, you will most likely need to have cron installed via a custom script using the technique in the previous section, and will need to populate the crontab. NOTE: The folder /custom-services.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.","title":"Custom Services"},{"location":"general/container-customization/#docker-mods","text":"In most cases if you needed to write some kind of custom logic to get a plugin to work or to use some kind of popular external service you will not be the only one that finds this logic useful. If you would like to publish and support your hard work we provide a system for a user to pass a single environment variable to the container to ingest your custom modifications. We consume Mods from Dockerhub and in order to publish one following our guide, you only need a Github Account and a Dockerhub account. (Our guide and example code can be found here) Essentially it is a system that stashes a tarball of scripts and any other files you need in an image layer on Dockerhub. When we spin up the container we will download this tarball and extract it to /. This allows community members to publish a relatively static pile of logic that will always be applied to an end user's up to date Linuxserver.io container. An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container: docker create \\ --name = transmission \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e DOCKER_MODS = taisun/config-mods:pia \\ -e PIAUSER = pmyuser \\ -e PIAPASS = mypassword \\ -e PIAENDPOINT = \"US New York City\" \\ -e TZ = US/Eastern \\ -p 9091 :9091 \\ -p 51413 :51413 \\ -p 51413 :51413/udp \\ -v path to data:/config \\ -v path to downloads:/downloads \\ -v path to watch folder:/watch \\ --restart unless-stopped \\ linuxserver/transmission The source code for this mod can be found here . NOTE: When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control.","title":"Docker Mods"},{"location":"general/container-customization/#we-are-here-to-help","text":"If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out. Our Discord server is best for quick direct contact and our Forum for a longer running project. There is zero barrier to entry for these levels of container customization and you are in complete control. We are looking forward to your next creation.","title":"We are here to help"},{"location":"general/container-execution/","text":"Container Execution You may find at some point you need to view the internal data of a container. Shell Access Particularly useful when debugging the application - to shell in to one of our containers, run the following: docker exec -it /bin/bash Tailing the logs The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the docker logs command: docker logs -f --tail = The --tail argument is optional, but useful if the application has been running for a long time - the logs command by default will output all logs. To make life simpler for yourself here's a handy bash alias to do some of the leg work for you: # ~/.bash_aliases alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' Execute it with dtail . Checking the build version If you are experiencing issues with one of our containers, it helps us to know which version of the image your container is running from. The primary reason we ask for this is because you may be reporting an issue we are aware of and have subsequently fixed. However, if you are running on the latest version of our image, it could indeed be a newly found bug, which we'd want to know more about. To obtain the build version for the container: docker inspect -f '{{ index .Config.Labels \"build_version\" }}' Or the image: docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/","title":"Container Execution"},{"location":"general/container-execution/#container-execution","text":"You may find at some point you need to view the internal data of a container.","title":"Container Execution"},{"location":"general/container-execution/#shell-access","text":"Particularly useful when debugging the application - to shell in to one of our containers, run the following: docker exec -it /bin/bash","title":"Shell Access"},{"location":"general/container-execution/#tailing-the-logs","text":"The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the docker logs command: docker logs -f --tail = The --tail argument is optional, but useful if the application has been running for a long time - the logs command by default will output all logs. To make life simpler for yourself here's a handy bash alias to do some of the leg work for you: # ~/.bash_aliases alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' Execute it with dtail .","title":"Tailing the logs"},{"location":"general/container-execution/#checking-the-build-version","text":"If you are experiencing issues with one of our containers, it helps us to know which version of the image your container is running from. The primary reason we ask for this is because you may be reporting an issue we are aware of and have subsequently fixed. However, if you are running on the latest version of our image, it could indeed be a newly found bug, which we'd want to know more about. To obtain the build version for the container: docker inspect -f '{{ index .Config.Labels \"build_version\" }}' Or the image: docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/","title":"Checking the build version"},{"location":"general/containers-101/","text":"Docker Containers: 101 A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever \u2013 the person who built the container for you took care of that. Containers don\u2019t usually ship with configuration files baked in though. This is because the contents of a container are \u2018stateless\u2019 or \u2018immutable\u2019. In English, this means the state or filesystem of the container itself cannot be modified after it is created. What do I need to know? To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler. docker run hello-world That's it, your first docker container. It pre-supposes you have docker installed but that's all it takes to run a container. You didn't need to know anything about installed what that app needed to run - this is the key benefit. hello-world is a simple example but imagine you have a complex application with a large number of dependencies and it is tied to a specific version of Python or Java. Then imagine you have a second app again tied to a specific, but different, version of Java or Python. Now you have to try and ensure these two (often conflicting) versions sit on the same host and play nice. In the world of containers these two versions can operate in complete isolation from one another. Bliss. Key Terminology There are a few terms you might find useful to understand when working with containers: docker - the first, and most popular, container runtime - it sits as an abstraction layer between the kernels features such as cgroups or namespaces and running applications container - a sandboxed process isolated in memory and running instance of an image image - a pre-built filesystem in a format ready to be understood by a container runtime (usually docker) volume - use volumes to persist data outside of the containers sandboxed filesystem environment - a way of configuring the sandboxed environment your container runs in Key Concepts Containers are completely sandboxed environments by the Linux kernel. It may help you to think of them somewhat like a small VM however in practice this is largely false. The Linux kernel controls access to various system resources utilising control groups (cgroups). We rely on docker to translate these complex concepts into simple ones that users can understand and consume. By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the -p flag. docker run -d --name = letsencrypt -p 80 :80 -p 443 :443 linuxserver/letsencrypt Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next. Containers are an amazing way to run applications in a secure, sandboxed way.","title":"Docker Containers: 101"},{"location":"general/containers-101/#docker-containers-101","text":"A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever \u2013 the person who built the container for you took care of that. Containers don\u2019t usually ship with configuration files baked in though. This is because the contents of a container are \u2018stateless\u2019 or \u2018immutable\u2019. In English, this means the state or filesystem of the container itself cannot be modified after it is created.","title":"Docker Containers: 101"},{"location":"general/containers-101/#what-do-i-need-to-know","text":"To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler. docker run hello-world That's it, your first docker container. It pre-supposes you have docker installed but that's all it takes to run a container. You didn't need to know anything about installed what that app needed to run - this is the key benefit. hello-world is a simple example but imagine you have a complex application with a large number of dependencies and it is tied to a specific version of Python or Java. Then imagine you have a second app again tied to a specific, but different, version of Java or Python. Now you have to try and ensure these two (often conflicting) versions sit on the same host and play nice. In the world of containers these two versions can operate in complete isolation from one another. Bliss.","title":"What do I need to know?"},{"location":"general/containers-101/#key-terminology","text":"There are a few terms you might find useful to understand when working with containers: docker - the first, and most popular, container runtime - it sits as an abstraction layer between the kernels features such as cgroups or namespaces and running applications container - a sandboxed process isolated in memory and running instance of an image image - a pre-built filesystem in a format ready to be understood by a container runtime (usually docker) volume - use volumes to persist data outside of the containers sandboxed filesystem environment - a way of configuring the sandboxed environment your container runs in","title":"Key Terminology"},{"location":"general/containers-101/#key-concepts","text":"Containers are completely sandboxed environments by the Linux kernel. It may help you to think of them somewhat like a small VM however in practice this is largely false. The Linux kernel controls access to various system resources utilising control groups (cgroups). We rely on docker to translate these complex concepts into simple ones that users can understand and consume. By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the -p flag. docker run -d --name = letsencrypt -p 80 :80 -p 443 :443 linuxserver/letsencrypt Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next. Containers are an amazing way to run applications in a secure, sandboxed way.","title":"Key Concepts"},{"location":"general/docker-compose/","text":"Docker Compose Intro Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application\u2019s services. Then, with a single command, you create and start all the services from your configuration. Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only. Installation Install Option 1 (recommended) Starting with version 2, Docker started publishing docker compose as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin. You can install docker compose via the following commands: ARCH = $( uname -m ) && [[ \" ${ ARCH } \" == \"armv7l\" ]] && ARCH = \"armv7\" sudo mkdir -p /usr/local/lib/docker/cli-plugins sudo curl -SL \"https://github.com/docker/compose/releases/latest/download/docker-compose-linux- ${ ARCH } \" -o /usr/local/lib/docker/cli-plugins/docker-compose sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running docker compose version should display the compose version. If you don't have docker installed yet, we recommend installing it via the following commands: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh v1.X compatibility As v2 runs as a plugin instead of a standalone binary, it is invoked by docker compose args instead of docker-compose args . There are also some slight differences in how the yaml is operated as well. To make migration easier, Docker released a replacement binary for docker-compose on x86_64 and aarch64 platforms. More info on that can be found at the upstream repo . Install Option 2 You can install docker-compose using our docker-compose image via a run script. You can simply run the following commands on your system and you should have a functional install that you can call from anywhere as docker-compose : sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/v2/run.sh -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose In order to update the local image, you can run the following commands: docker pull linuxserver/docker-compose: \" ${ DOCKER_COMPOSE_IMAGE_TAG :- v2 } \" docker image prune -f The above commands will use the v2 images (although invoked by docker-compose instead of docker compose ). If you'd like to use v1 images, you can set an env var DOCKER_COMPOSE_IMAGE_TAG=alpine , DOCKER_COMPOSE_IMAGE_TAG=ubuntu in your respective .profile . Alternatively you can set that var to a versioned image tag like v2-2.4.1-r1 or version-alpine-1.27.4 to pin it to a specific docker-compose version. Single service Usage Here's a basic example for deploying a Linuxserver container with docker compose: version : \"2.1\" services : heimdall : image : linuxserver/heimdall container_name : heimdall volumes : - /home/user/appdata/heimdall:/config environment : - PUID=1000 - PGID=1000 - TZ=Europe/London ports : - 80:80 - 443:443 restart : unless-stopped If you save the above snippet in a file named docker-compose.yml , you can simply run docker compose up -d from within the same folder and the heimdall image will be automatically pulled, and a container will be created and started. up means bring the services up, and -d means do it in the background. If you want to do it from a different folder or if you named the yaml file differently, ie. heimdall.yml , then you can define it in the command with -f : docker compose -f /path/to/heimdall.yml up -d To bring down the services, simply do docker compose down or docker compose -f /path/to/heimdall.yml down and all containers defined by the yml will be stopped and destroyed. Multiple Service Usage You can have multiple services managed by a single compose yaml. Copy the contents below the services: line in any of our readme yaml samples into the same yaml file and the docker compose up/down commands will apply to all services at once. Let's say you have the following in a yaml file named docker-compose.yml : version : \"2.1\" services : heimdall : image : linuxserver/heimdall container_name : heimdall volumes : - /home/user/appdata/heimdall:/config environment : - PUID=1000 - PGID=1000 - TZ=Europe/London ports : - 80:80 - 443:443 restart : unless-stopped nginx : image : linuxserver/nginx container_name : nginx environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/user/appdata/nginx:/config ports : - 81:80 - 444:443 restart : unless-stopped mariadb : image : linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD - TZ=Europe/London volumes : - /home/user/appdata/mariadb:/config ports : - 3306:3306 restart : unless-stopped You now have 3 services defined in there: heimdall , nginx and mariadb . When you do a docker compose up -d , it will first download the images for all three if they don't exist (if they exist, they are not updated) and it will create all three containers and start them. docker compose down will bring all three services down and destroy the containers (persistent data will remain). Updates If you want to update the images and recreate the containers with the same vars, it's extremely easy with docker-compose. First we tell it to update all images via docker compose pull . Then we issue docker compose up -d and it will automatically recreate the containers (as necessary) based on the updated images. If a container's image is already the latest and there was no update, it remains untouched. Similarly, if you edit the contents of the yaml file and re-issue docker compose up -d , only the containers affected by the changes to the yaml file will be recreated, others will be untouched. Defining the containers running on your server as code is a core tenet of a \"Devops\" approach to the world. Constructing elaborate docker run commands and then forgetting which variables you passed is a thing of the past when using docker compose . Support Requests If you would like to request support, you can do so on our forum or on our discord server . When you do so, please provide all the necessary information like the server and platform info, docker container log and the compose yaml. If your compose yaml makes use of .env , please post an output of docker compose convert or docker compose convert -f /path/to/compose.yml for the entire yaml, or docker compose convert for a single service, as it will automatically replace the environment variables with their actual values. Tips & Tricks docker compose expects a docker-compose.yml file in the current directory and if one isn't present it will complain. In order to improve your quality of life we suggest the use of bash aliases. The file path for the aliases below assumes that the docker-compose.yml file is being kept in the folder /opt . If your compose file is kept somewhere else, like in a home directory, then the path will need to be changed. Create or open the file ~/.bash_aliases and populate with the following content: alias dcup = 'docker compose -f /opt/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup alias dcdown = 'docker compose -f /opt/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown alias dcpull = 'docker compose -f /opt/docker-compose.yml pull' #pulls all new images is specified after dcpull alias dclogs = 'docker compose -f /opt/docker-compose.yml logs -tf --tail=\"50\" ' alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' If the docker-compose.yml file is in a home directory, the following can be put in the ~/.bash_aliases file. alias dcup = 'docker-compose -f ~/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup alias dcdown = 'docker-compose -f ~/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown alias dcpull = 'docker-compose -f ~/docker-compose.yml pull' #pulls all new images unless one is specified alias dclogs = 'docker-compose -f ~/docker-compose.yml logs -tf --tail=\"50\" ' alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' There are multiple ways to see the logs of your containers. In some instances, using docker logs is preferable to docker compose logs . By default docker logs will not run unless you define which service the logs are coming from. The docker compose logs will pull all of the logs for the services defined in the docker-compose.yml file. When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your docker-compose.yml file, it is not helpful to submit all of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using docker logs heimdall or docker compose logs heimdall . The bash_alias for dclogs can be used if you define your service after you've typed the alias. Likewise, the bash_alias detail will not run without defining the service after it. Some distributions, like Ubuntu, already have the code snippet below in the ~/.bashrc file. If it is not included, you'll need to add the following to your ~/.bashrc file in order for the aliases file to be picked up: if [ -f ~/.bash_aliases ] ; then . ~/.bash_aliases fi Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.","title":"Docker Compose"},{"location":"general/docker-compose/#docker-compose","text":"","title":"Docker Compose"},{"location":"general/docker-compose/#intro","text":"Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application\u2019s services. Then, with a single command, you create and start all the services from your configuration. Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only.","title":"Intro"},{"location":"general/docker-compose/#installation","text":"Install Option 1 (recommended) Starting with version 2, Docker started publishing docker compose as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin. You can install docker compose via the following commands: ARCH = $( uname -m ) && [[ \" ${ ARCH } \" == \"armv7l\" ]] && ARCH = \"armv7\" sudo mkdir -p /usr/local/lib/docker/cli-plugins sudo curl -SL \"https://github.com/docker/compose/releases/latest/download/docker-compose-linux- ${ ARCH } \" -o /usr/local/lib/docker/cli-plugins/docker-compose sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running docker compose version should display the compose version. If you don't have docker installed yet, we recommend installing it via the following commands: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh v1.X compatibility As v2 runs as a plugin instead of a standalone binary, it is invoked by docker compose args instead of docker-compose args . There are also some slight differences in how the yaml is operated as well. To make migration easier, Docker released a replacement binary for docker-compose on x86_64 and aarch64 platforms. More info on that can be found at the upstream repo . Install Option 2 You can install docker-compose using our docker-compose image via a run script. You can simply run the following commands on your system and you should have a functional install that you can call from anywhere as docker-compose : sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/v2/run.sh -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose In order to update the local image, you can run the following commands: docker pull linuxserver/docker-compose: \" ${ DOCKER_COMPOSE_IMAGE_TAG :- v2 } \" docker image prune -f The above commands will use the v2 images (although invoked by docker-compose instead of docker compose ). If you'd like to use v1 images, you can set an env var DOCKER_COMPOSE_IMAGE_TAG=alpine , DOCKER_COMPOSE_IMAGE_TAG=ubuntu in your respective .profile . Alternatively you can set that var to a versioned image tag like v2-2.4.1-r1 or version-alpine-1.27.4 to pin it to a specific docker-compose version.","title":"Installation"},{"location":"general/docker-compose/#single-service-usage","text":"Here's a basic example for deploying a Linuxserver container with docker compose: version : \"2.1\" services : heimdall : image : linuxserver/heimdall container_name : heimdall volumes : - /home/user/appdata/heimdall:/config environment : - PUID=1000 - PGID=1000 - TZ=Europe/London ports : - 80:80 - 443:443 restart : unless-stopped If you save the above snippet in a file named docker-compose.yml , you can simply run docker compose up -d from within the same folder and the heimdall image will be automatically pulled, and a container will be created and started. up means bring the services up, and -d means do it in the background. If you want to do it from a different folder or if you named the yaml file differently, ie. heimdall.yml , then you can define it in the command with -f : docker compose -f /path/to/heimdall.yml up -d To bring down the services, simply do docker compose down or docker compose -f /path/to/heimdall.yml down and all containers defined by the yml will be stopped and destroyed.","title":"Single service Usage"},{"location":"general/docker-compose/#multiple-service-usage","text":"You can have multiple services managed by a single compose yaml. Copy the contents below the services: line in any of our readme yaml samples into the same yaml file and the docker compose up/down commands will apply to all services at once. Let's say you have the following in a yaml file named docker-compose.yml : version : \"2.1\" services : heimdall : image : linuxserver/heimdall container_name : heimdall volumes : - /home/user/appdata/heimdall:/config environment : - PUID=1000 - PGID=1000 - TZ=Europe/London ports : - 80:80 - 443:443 restart : unless-stopped nginx : image : linuxserver/nginx container_name : nginx environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/user/appdata/nginx:/config ports : - 81:80 - 444:443 restart : unless-stopped mariadb : image : linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD - TZ=Europe/London volumes : - /home/user/appdata/mariadb:/config ports : - 3306:3306 restart : unless-stopped You now have 3 services defined in there: heimdall , nginx and mariadb . When you do a docker compose up -d , it will first download the images for all three if they don't exist (if they exist, they are not updated) and it will create all three containers and start them. docker compose down will bring all three services down and destroy the containers (persistent data will remain).","title":"Multiple Service Usage"},{"location":"general/docker-compose/#updates","text":"If you want to update the images and recreate the containers with the same vars, it's extremely easy with docker-compose. First we tell it to update all images via docker compose pull . Then we issue docker compose up -d and it will automatically recreate the containers (as necessary) based on the updated images. If a container's image is already the latest and there was no update, it remains untouched. Similarly, if you edit the contents of the yaml file and re-issue docker compose up -d , only the containers affected by the changes to the yaml file will be recreated, others will be untouched. Defining the containers running on your server as code is a core tenet of a \"Devops\" approach to the world. Constructing elaborate docker run commands and then forgetting which variables you passed is a thing of the past when using docker compose .","title":"Updates"},{"location":"general/docker-compose/#support-requests","text":"If you would like to request support, you can do so on our forum or on our discord server . When you do so, please provide all the necessary information like the server and platform info, docker container log and the compose yaml. If your compose yaml makes use of .env , please post an output of docker compose convert or docker compose convert -f /path/to/compose.yml for the entire yaml, or docker compose convert for a single service, as it will automatically replace the environment variables with their actual values.","title":"Support Requests"},{"location":"general/docker-compose/#tips-tricks","text":"docker compose expects a docker-compose.yml file in the current directory and if one isn't present it will complain. In order to improve your quality of life we suggest the use of bash aliases. The file path for the aliases below assumes that the docker-compose.yml file is being kept in the folder /opt . If your compose file is kept somewhere else, like in a home directory, then the path will need to be changed. Create or open the file ~/.bash_aliases and populate with the following content: alias dcup = 'docker compose -f /opt/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup alias dcdown = 'docker compose -f /opt/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown alias dcpull = 'docker compose -f /opt/docker-compose.yml pull' #pulls all new images is specified after dcpull alias dclogs = 'docker compose -f /opt/docker-compose.yml logs -tf --tail=\"50\" ' alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' If the docker-compose.yml file is in a home directory, the following can be put in the ~/.bash_aliases file. alias dcup = 'docker-compose -f ~/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup alias dcdown = 'docker-compose -f ~/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown alias dcpull = 'docker-compose -f ~/docker-compose.yml pull' #pulls all new images unless one is specified alias dclogs = 'docker-compose -f ~/docker-compose.yml logs -tf --tail=\"50\" ' alias dtail = 'docker logs -tf --tail=\"50\" \"$@\"' There are multiple ways to see the logs of your containers. In some instances, using docker logs is preferable to docker compose logs . By default docker logs will not run unless you define which service the logs are coming from. The docker compose logs will pull all of the logs for the services defined in the docker-compose.yml file. When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your docker-compose.yml file, it is not helpful to submit all of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using docker logs heimdall or docker compose logs heimdall . The bash_alias for dclogs can be used if you define your service after you've typed the alias. Likewise, the bash_alias detail will not run without defining the service after it. Some distributions, like Ubuntu, already have the code snippet below in the ~/.bashrc file. If it is not included, you'll need to add the following to your ~/.bashrc file in order for the aliases file to be picked up: if [ -f ~/.bash_aliases ] ; then . ~/.bash_aliases fi Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.","title":"Tips & Tricks"},{"location":"general/fleet/","text":"Fleet How Fleet works Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data. It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable . This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner. Why a snapshot? In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call. As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API: API Time (ms) Docker Hub (multiple calls) 52000ms Fleet 50ms Capabilities Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page. Hidden If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included. Unstable Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly. Deprecated If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context. API Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository {% api-method method=\"get\" host=\"https://fleet.linuxserver.io\" path=\"/api/v1/images\" %} {% api-method-summary %} Get All Repositories and Images {% api-method-description %} Returns all synchronized images. {% api-method-spec %} {% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned. { \"status\" : \"OK\" , \"data\" { \"totalPullCount\" : 1862494227 , \"repositories\" : { \"lsiobase\" : [ { \"name\" : \"alpine\" , \"pullCount\" : 4275970 , \"version\" : \"3.6\" , \"stable\" : true }, { \"name\" : \"alpine.arm64\" , \"pullCount\" : 66234 , \"version\" : \"edge\" , \"stable\" : true }, ... ], \"linuxserver\" : [ { \"name\" : \"airsonic\" , \"pullCount\" : 4608329 , \"version\" : \"v10.2.1\" , \"stable\" : true }, { \"name\" : \"apache\" , \"pullCount\" : 3011699 , \"version\" : \"latest\" , \"stable\" : true }, ... ] ... } } } {% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %} {% hint style=\"info\" %} Any repositories not synchronized with Docker Hub (e.g. staging or metadata repositories) will not be returned as part of the API. This also applies to images which the repository owner does not wish to be part of the primary image list. Running Fleet {% hint style=\"warning\" %} Fleet is a Java application and requires at least JRE 11. Grab the latest Fleet release from GitHub . SQL Fleet stores its data in a MariaDB database which you need to provide. In order for the application to manage its tables and procedures, the user you provide it needs to have the relevant GRANT permissions to the fleet database. The following script should be sufficient to get the initial database set up. CREATE SCHEMA ` fleet ` ; CREATE USER 'fleet_user' IDENTIFIED BY 'supersecretpassword' ; GRANT ALL ON ` fleet ` . * TO 'fleet_user' ; The username and password that you define must then be provided as part of Fleet's configuration. Configuration File All primary configuration for Fleet at runtime is loaded in via a fleet.properties file. This can be located anywhere on the file system, and is loaded in via a Runtime argument: # Runtime fleet.app.port = 8080 # Database Connectivity fleet.database.driver = org.mariadb.jdbc.Driver fleet.database.url = jdbc:mariadb://:3306/fleet fleet.database.username = fleet.database.password = # Password security fleet.admin.secret = All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties. {% hint style=\"info\" %} If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. fleet.app.port=8080 becomes export fleet_app_port=8080 Property Name Purpose fleet.app.port The port which the application will be running under. fleet.admin.secret A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret. fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver fleet.database.url The full JDBC connection string to the database. fleet.database.username The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations. fleet.database.password The password for the SQL user Runtime Arguments As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime. {% hint style=\"info\" %} Unlike the properties defined above, these properties are only accessed via the JVM arguments ( -D ). Runtime Argument Purpose fleet.config.base The absolute path of the configuration file. fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended . fleet.nuke.database Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet. fleet.skip.sync.on.startup By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval. Default User When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are: Username : admin Password : admin {% hint style=\"warning\" %} You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.","title":"Fleet"},{"location":"general/fleet/#fleet","text":"","title":"Fleet"},{"location":"general/fleet/#how-fleet-works","text":"Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data. It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable . This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner.","title":"How Fleet works"},{"location":"general/fleet/#why-a-snapshot","text":"In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call. As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API: API Time (ms) Docker Hub (multiple calls) 52000ms Fleet 50ms","title":"Why a snapshot?"},{"location":"general/fleet/#capabilities","text":"Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.","title":"Capabilities"},{"location":"general/fleet/#hidden","text":"If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included.","title":"Hidden"},{"location":"general/fleet/#unstable","text":"Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly.","title":"Unstable"},{"location":"general/fleet/#deprecated","text":"If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context.","title":"Deprecated"},{"location":"general/fleet/#api","text":"Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository {% api-method method=\"get\" host=\"https://fleet.linuxserver.io\" path=\"/api/v1/images\" %} {% api-method-summary %} Get All Repositories and Images {% api-method-description %} Returns all synchronized images. {% api-method-spec %} {% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned. { \"status\" : \"OK\" , \"data\" { \"totalPullCount\" : 1862494227 , \"repositories\" : { \"lsiobase\" : [ { \"name\" : \"alpine\" , \"pullCount\" : 4275970 , \"version\" : \"3.6\" , \"stable\" : true }, { \"name\" : \"alpine.arm64\" , \"pullCount\" : 66234 , \"version\" : \"edge\" , \"stable\" : true }, ... ], \"linuxserver\" : [ { \"name\" : \"airsonic\" , \"pullCount\" : 4608329 , \"version\" : \"v10.2.1\" , \"stable\" : true }, { \"name\" : \"apache\" , \"pullCount\" : 3011699 , \"version\" : \"latest\" , \"stable\" : true }, ... ] ... } } } {% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %} {% hint style=\"info\" %} Any repositories not synchronized with Docker Hub (e.g. staging or metadata repositories) will not be returned as part of the API. This also applies to images which the repository owner does not wish to be part of the primary image list.","title":"API"},{"location":"general/fleet/#running-fleet","text":"{% hint style=\"warning\" %} Fleet is a Java application and requires at least JRE 11. Grab the latest Fleet release from GitHub .","title":"Running Fleet"},{"location":"general/fleet/#sql","text":"Fleet stores its data in a MariaDB database which you need to provide. In order for the application to manage its tables and procedures, the user you provide it needs to have the relevant GRANT permissions to the fleet database. The following script should be sufficient to get the initial database set up. CREATE SCHEMA ` fleet ` ; CREATE USER 'fleet_user' IDENTIFIED BY 'supersecretpassword' ; GRANT ALL ON ` fleet ` . * TO 'fleet_user' ; The username and password that you define must then be provided as part of Fleet's configuration.","title":"SQL"},{"location":"general/fleet/#configuration-file","text":"All primary configuration for Fleet at runtime is loaded in via a fleet.properties file. This can be located anywhere on the file system, and is loaded in via a Runtime argument: # Runtime fleet.app.port = 8080 # Database Connectivity fleet.database.driver = org.mariadb.jdbc.Driver fleet.database.url = jdbc:mariadb://:3306/fleet fleet.database.username = fleet.database.password = # Password security fleet.admin.secret = All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties. {% hint style=\"info\" %} If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. fleet.app.port=8080 becomes export fleet_app_port=8080 Property Name Purpose fleet.app.port The port which the application will be running under. fleet.admin.secret A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret. fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver fleet.database.url The full JDBC connection string to the database. fleet.database.username The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations. fleet.database.password The password for the SQL user","title":"Configuration File"},{"location":"general/fleet/#runtime-arguments","text":"As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime. {% hint style=\"info\" %} Unlike the properties defined above, these properties are only accessed via the JVM arguments ( -D ). Runtime Argument Purpose fleet.config.base The absolute path of the configuration file. fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended . fleet.nuke.database Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet. fleet.skip.sync.on.startup By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval.","title":"Runtime Arguments"},{"location":"general/fleet/#default-user","text":"When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are: Username : admin Password : admin {% hint style=\"warning\" %} You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.","title":"Default User"},{"location":"general/running-our-containers/","text":"Running LinuxServer Containers Image Structure Base Images We have curated various base images which our main application images derive from. This is beneficial for two main reasons: A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies. Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors. The /config volume To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume. We do this because we believe that it makes it easier to answer the common question of \"where does the application data get persisted?\" - the answer being \"always in /config \". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself! Creating a Container To create a container from one of our images, you must use either docker create or docker run . Each image follows the same pattern in the command when creating a container: docker create \\ --name = \\ -v :/config \\ -e PUID = \\ -e PGID = \\ -p : \\ linuxserver/","title":"Running LinuxServer Containers"},{"location":"general/running-our-containers/#running-linuxserver-containers","text":"","title":"Running LinuxServer Containers"},{"location":"general/running-our-containers/#image-structure","text":"","title":"Image Structure"},{"location":"general/running-our-containers/#base-images","text":"We have curated various base images which our main application images derive from. This is beneficial for two main reasons: A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies. Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors.","title":"Base Images"},{"location":"general/running-our-containers/#the-config-volume","text":"To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume. We do this because we believe that it makes it easier to answer the common question of \"where does the application data get persisted?\" - the answer being \"always in /config \". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself!","title":"The /config volume"},{"location":"general/running-our-containers/#creating-a-container","text":"To create a container from one of our images, you must use either docker create or docker run . Each image follows the same pattern in the command when creating a container: docker create \\ --name = \\ -v :/config \\ -e PUID = \\ -e PGID = \\ -p : \\ linuxserver/","title":"Creating a Container"},{"location":"general/swag/","text":"SWAG The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn Table of Contents SWAG Table of Contents Introduction What are SSL certs? What is Let's Encrypt (and/or ZeroSSL)? Creating a SWAG container docker cli docker-compose Authorization method Cert Provider (Let's Encrypt vs ZeroSSL) Port forwards Docker networking Container setup examples Create container via http validation Create container via dns validation with a wildcard cert Create container via duckdns validation with a wildcard cert Web hosting examples Simple html web page hosting Hosting a Wordpress site Reverse Proxy Preset proxy confs Understanding the proxy conf structure Subdomain proxy conf Subfolder proxy conf Ombi subdomain reverse proxy example Nextcloud subdomain reverse proxy example Plex subfolder reverse proxy example Using Heimdall as the home page at domain root Troubleshooting Common errors 404 502 Final Thoughts How to Request Support Introduction What are SSL certs? SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party. What is Let's Encrypt (and/or ZeroSSL)? In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL , one can get free certs via automated means. The SWAG docker image , published and maintained by LinuxServer.io , makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image . Creating a SWAG container Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios. docker cli docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = yourdomain.url \\ -e SUBDOMAINS = www, \\ -e VALIDATION = http \\ -e CERTPROVIDER = ` #optional` \\ -e DNSPLUGIN = cloudflare ` #optional` \\ -e DUCKDNSTOKEN = ` #optional` \\ -e EMAIL = ` #optional` \\ -e ONLY_SUBDOMAINS = false ` #optional` \\ -e EXTRA_DOMAINS = ` #optional` \\ -e STAGING = false ` #optional` \\ -p 443 :443 \\ -p 80 :80 ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag docker-compose Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - SUBDOMAINS=www, - VALIDATION=http - CERTPROVIDER= #optional - DNSPLUGIN=cloudflare #optional - DUCKDNSTOKEN= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes : - :/config ports : - 443:443 - 80:80 #optional restart : unless-stopped Authorization method Our image currently supports three different methods to validate domain ownership: http: Let's Encrypt (acme) server connects to domain on port 80 Can be owned domain or a dynamic dns address dns: Let's Encrypt (acme) server connects to dns provider Api credentials and settings entered into ini files under /config/dns-conf/ Supports wildcard certs Need to have own domain name (non-free) duckdns: Let's Encrypt (acme) server connects to DuckDNS Supports wildcard certs (only for the sub-subdomains) No need for own domain (free) The validation is performed when the container is started for the first time. Nginx won't be up until ssl certs are successfully generated. The certs are valid for 90 days. The container will check the cert expiration status every night and if they are to expire within 30 days, it will attempt to auto-renew. If your certs are about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the auto-renewals failed. Cert Provider (Let's Encrypt vs ZeroSSL) As of January 2021, SWAG supports getting certs validated by either Let's Encrypt or ZeroSSL . Both services use the ACME protocol as the underlying method to validate ownership. Our Certbot client in the SWAG image is ACME compliant and therefore supports both services. Although very similar, ZeroSSL does (at the time of writing) have a couple of advantages over Let's Encrypt: ZeroSSL provides unlimited certs via ACME and has no rate limits or throttling (it's quite common for new users to get throttled by Let's Encrypt due to multiple unsuccessful attempts to validate) ZeroSSL provides a web interface that allows users to list and manage the certs they have received SWAG currently defaults to Let's Encrypt as the cert provider so as not to break existing installs, however users can override that behavior by setting the environment variable CERTPROVIDER=zerossl to retrieve a cert from ZeroSSL instead. The only gotcha is that ZeroSSL requires the EMAIL env var to be set so the certs can be tied to a ZeroSSL account for management over their web interface. Port forwards Port 443 mapping is required for access through https://domain.com . However, you don't necessarily need to have it listen on port 443 on the host server. All that is needed is to have port 443 on the router (wan) somehow forward to port 443 inside the container, while it can go through a different port on the host. For instance, it is ok to have port 443 on router (wan) forward to port 444 on the host, and then map port 444 to port 443 in docker run/create or compose yml. Port 80 forwarding is required for http validation only. Same rule as above applies, and it's OK to go from 80 on the router to 81 on the host, mapped to 80 in the container. Docker networking SWAG container happily runs with bridge networking. However, the default bridge network in docker does not allow containers to connect each other via container names used as dns hostnames. Therefore, it is recommended to first create a user defined bridge network and attach the containers to that network. If you are using docker-compose, and your services are on the same yaml, you do not need to do this, because docker-compose automatically creates a user defined bridge network and attaches each container to it as long as no other networking option is defined in their config. For the below examples, we will use a network named lsio . We can create it via docker network create lsio . After that, any container that is created with --net=lsio can ping each other by container name as dns hostname. Keep in mind that dns hostnames are meant to be case-insensitive, however container names are case-sensitive. For container names to be used as dns hostnames in nginx, they should be all lowercase as nginx will convert them to all lowercase before trying to resolve. Container setup examples Create container via http validation Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com and ombi.linuxserver-test.com . On the router, forward ports 80 and 443 to your host server. On your dns provider (if using your own domain), create an A record for the main domain and point it to your server IP (wan). Also create CNAMES for www and ombi and point them to the A record for the domain. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = www,ombi \\ -e VALIDATION = http \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once created, we do docker start swag to start it. With docker compose, we can use the following yml: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=www,ombi - VALIDATION=http volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped We can fire up the container with docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . After some initial initialization, we will see the validation steps. After all the steps, it should print Server ready in the logs. Now we can browse to https://www.linuxserver-test.com and we'll see the default landing page displayed. Create container via dns validation with a wildcard cert Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com , ombi.linuxserver-test.com and any other subdomain possible. On the router, we'll forward port 443 to our host server (Port 80 forwarding is optional). We'll need to make sure that we are using a dns provider that is supported by this image. Currently the following dns plugins are supported: cloudflare , cloudxns , digitalocean , dnsimple , dnsmadeeasy , google , luadns , nsone , ovh , rfc2136 and route53 . Your dns provider by default is the provider of your domain name and if they are not supported, it is very easy to switch to a different dns provider. Cloudflare is recommended due to being free and reliable. To switch to Cloudflare, you can register for a free account and follow their steps to point the nameservers to Cloudflare. The rest of the instructions assume that we are using the cloudflare dns plugin. On our dns provider, we'll create an A record for the main domain and point it to our server IP (wan). We'll also create a CNAME for * and point it to the A record for the domain. On Cloudflare, we'll click on the orange cloud to turn it grey so that it is dns only and not cached/proxied by Cloudflare, which would add more complexities. Now, let's get the container set up. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag And we start the container via docker start swag With docker compose, we'll use: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Then we'll fire up the container via docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . After some init steps, we'll notice that the container will give an error during validation due to wrong credentials. That's because we didn't enter the correct credentials for the Cloudflare api yet. We can browse to the location /config/dns-conf which is mapped from the host location (according to above settings) /home/aptalca/appdata/swag/dns-conf/ and edit the correct ini file for our dns provider. For Cloudflare, we'll enter our e-mail address and the api key. The api key can be retrieved by going to the Overview page and clicking on Get your API key link. We'll need the Global API Key . Once we enter the credentials into the ini file, we'll restart the docker container via docker restart swag and again watch the logs. After successful validation, we should see the notice Server ready and our webserver should be up and accessible at https://www.linuxserver-test.com . Create container via duckdns validation with a wildcard cert We will first need to get a subdomain from DuckDNS . Let's assume we get linuxserver-test so our url will be linuxserver-test.duckdns.org . Then we'll need to make sure that the subdomain points to our server IP (wan) on the DuckDNS website. We can always use our DuckDNS docker image to keep the IP up to date. Don't forget to get the token for your account from DuckDNS. On the router, we'll forward port 443 to our host server (Port 80 forward is optional). Now, let's get the container set up. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.duckdns.org \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = duckdns \\ -e DUCKDNSTOKEN = 97654867496t0877648659765854 \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag And we start the container via docker start swag With docker compose, we'll use: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.duckdns.org - SUBDOMAINS=wildcard - VALIDATION=duckdns - DUCKDNSTOKEN=97654867496t0877648659765854 volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Then we'll fire up the container via docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . We'll see some initialization and then we will see the validation steps. After all the steps, it should print Server ready in the logs. Now we can access the webserver by browsing to https://www.linuxserver-test.duckdns.org . NOTICE: Due to a DuckDNS limitation, our cert only covers the wildcard subdomains, but it doesn't cover the main url. So if we try to access https://linuxserver-test.duckdns.org , we'll see a browser warning about an invalid ssl cert. But accessing it through the www (or ombi or any other) subdomain should work fine. Web hosting examples Simple html web page hosting Once we have a working container, we can drop our web documents in and modify the nginx config files to set up our webserver. All the necessary files are under /config which is mapped from the host location (set by above examples) /home/aptalca/appdata/swag . We can drop all of our web/html files into /config/www . The main site config nginx uses can be found at /config/nginx/site-confs/default . Don't delete this file, as it will be regenerated on container restart, but feel free to modify as needed. By default, it is listening on port 443, and the root folder is set to /config/www , so if you drop a page1.html into that location, it will be accessible at https://linuxserver-test.com/page1.html . To enable listening on port 80 and automatically redirecting to port 443 for enforcing ssl, uncomment the lines at the top of the default site config so it reads: # redirect all traffic to https server { listen 80 ; listen [::]:80 ; server_name _ ; return 301 https:// $host$request_uri ; } After any changes to the config files, simply restart the container via docker restart swag to reload the nginx config. Hosting a Wordpress site Wordpress requires a mysql database. For that, we'll use the linuxserver MariaDB docker image . Here's a docker compose stack to get both containers set up. For this exercise, we'll utilize the cloudflare dns plugin for Let's Encrypt validation, but you can use any other method to set it up as described in this linked section : --- version : \"2.1\" services : mariadb : image : lscr.io/linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=mariadbpassword - TZ=Europe/London - MYSQL_DATABASE=WP_database - MYSQL_USER=WP_dbuser - MYSQL_PASSWORD=WP_dbpassword volumes : - /home/aptalca/appdata/mariadb:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 depends_on : - mariadb restart : unless-stopped And here are the docker cli versions (make sure you already created the lsio network as described above : Mariadb: docker create \\ --name = mariadb \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = mariadbpassword \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = WP_database \\ -e MYSQL_USER = WP_dbuser \\ -e MYSQL_PASSWORD = WP_dbpassword \\ -v /home/aptalca/appdata/mariadb:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the SWAG container is set up with ssl certs and the webserver is up, we'll download the latest Wordpress and untar it into our www folder: wget https://wordpress.org/latest.tar.gz tar xvf latest.tar.gz -C /home/aptalca/appdata/swag/www/ rm latest.tar.gz Now that we have all the Wordpress files under the container's /config/www/wordpress folder, we'll need to make some adjustments to the nginx configurations. Find the line in /config/nginx/site-confs/default that reads root /config/www; and change it to root /config/www/wordpress; Find the line in /config/nginx/site-confs/default that reads try_files $uri $uri/ /index.html /index.php$is_args$args =404; and change it to try_files $uri $uri/ /index.html /index.php$is_args$args; Alternatively, if you need to run multiple instances of Wordpress, you can leave /config/nginx/site-confs/default entirely unchanged and create new site-confs for each instance of Wordpress. The new site-confs will be slimmed down copies of /config/nginx/site-confs/default . This assumes you will run each instance on a separate subdomain. If you would prefer to have each Wordpress site on a different top level domain, be sure to add each domain to the EXTRA_DOMAINS environment variable. Ex: /config/nginx/site-confs/myfirstsubdomain.linuxserver-test.com.conf server { listen 443 ssl http2 ; # REMOVED default_server listen [::]:443 ssl http2 ; # REMOVED default_server server_name myfirstsubdomain.linuxserver-test.com ; # PUT YOUR DOMAIN HERE root /config/sites/myfirstsubdomain.linuxserver-test.com/www ; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE index index.html index.htm index.php ; location / { try_files $uri $uri/ /index.html /index.php $is_args$args ; # REMOVED =404 } location ~ ^(.+\\.php)(.*)$ { fastcgi_split_path_info ^(.+\\.php)(.*) $ ; fastcgi_pass 127.0.0.1 : 9000 ; fastcgi_index index.php ; include /etc/nginx/fastcgi_params ; } # deny access to .htaccess/.htpasswd files location ~ /\\.ht { deny all ; } } /config/nginx/site-confs/mysecondsubdomain.linuxserver-test.com.conf server { listen 443 ssl http2 ; # REMOVED default_server listen [::]:443 ssl http2 ; # REMOVED default_server server_name mysecondsubdomain.linuxserver-test.com ; # PUT YOUR DOMAIN HERE root /config/sites/mysecondsubdomain.linuxserver-test.com/www ; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE index index.html index.htm index.php ; location / { try_files $uri $uri/ /index.html /index.php $is_args$args ; # REMOVED =404 } location ~ ^(.+\\.php)(.*)$ { fastcgi_split_path_info ^(.+\\.php)(.*) $ ; fastcgi_pass 127.0.0.1 : 9000 ; fastcgi_index index.php ; include /etc/nginx/fastcgi_params ; } # deny access to .htaccess/.htpasswd files location ~ /\\.ht { deny all ; } } Now that you have completed changing your nginx configurations you need to restart the SWAG container. Now we should be able to access our Wordpress config page at https://linuxserver-test.com/wp-admin/install.php . We'll go ahead and enter mariadb as the Database Host address (we are using the container name as the dns hostname since both containers are in the same user defined bridge network), and also enter the Database Name, user and password we used in the mariadb config above ( WP_database , WP_dbuser and WP_dbpassword ). Once we go through the rest of the install steps, our Wordpress instance should be fully set up and available at https://linuxserver-test.com . If you would like to have http requests on port 80 enabled and auto redirected to https on port 443, uncomment the relevant lines at the top of the default site config to read: # redirect all traffic to https server { listen 80 ; listen [::]:80 ; server_name _ ; return 301 https:// $host$request_uri ; } Reverse Proxy A reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as if they originated from the Web server itself (Shamelessly borrowed from another post on our blog ). In this case, a user or a client browser can connect to our SWAG container via https on port 443, request a service such as Ombi, then our SWAG container connects to the ombi container, retrieves the data and passes it on to the client via https with our trusted cert. The connection to ombi is local and does not need to be encrypted, but all communication between our SWAG container and the client browser will be encrypted. Preset proxy confs Our SWAG image comes with a list of preset reverse proxy confs for popular apps and services. They are hosted on Github and are pulled into the /config/nginx/proxy-confs folder as inactive sample files. To activate, one must rename a conf file to remove .sample from the filename and restart the SWAG container. Any proxy conf file in that folder with a name that matches *.subdomain.conf or *.subfolder.conf will be loaded in nginx during container start. Most proxy confs work without any modification, but some may require other changes. All the required changes are listed at the top of each proxy conf. The conf files use container names to reach other containers and therefore the proxied containers should be named the same as listed in our documentation for each container. The conf files also require that the SWAG container is in the same user defined bridge network as the other container so they can reach each other via container name as dns hostnames. Make sure you follow the instructions listed above in the Docker networking section . Understanding the proxy conf structure Subdomain proxy conf Here's the preset proxy conf for Heimdall as a subdomain (ie. https://heimdall.linuxserver-test.com ): # make sure that your dns has a cname set for heimdall server { listen 443 ssl ; listen [::]:443 ssl ; server_name heimdall.* ; include /config/nginx/ssl.conf ; client_max_body_size 0 ; # enable for ldap auth, fill in ldap details in ldap.conf #include /config/nginx/ldap.conf; # enable for Authelia #include /config/nginx/authelia-server.conf; location / { # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; # enable the next two lines for ldap auth #auth_request /auth; #error_page 401 =200 /ldaplogin; # enable for Authelia #include /config/nginx/authelia-location.conf; include /config/nginx/proxy.conf ; resolver 127 .0.0.11 valid=30s ; set $upstream_app heimdall ; set $upstream_port 443 ; set $upstream_proto https ; proxy_pass $upstream_proto://$upstream_app:$upstream_port ; } } Let's dissect this conf to look at what each directive or block does. server { } This is our server block. Whenever nginx gets a request from a client, it determines which server block should be processed based on the destination server name, port and other relevant info, and the matching server block determines how nginx handles and responds to the request. listen 443 ssl ; listen [::]:443 ssl ; This means that only requests coming to port 443 will match this server block. server_name heimdall.* ; Only destination addresses that match heimdall.* will match this server block. include /config/nginx/ssl.conf ; This directive injects the contents of our ssl.conf file here, which contains all ssl related settings (cert location, ciphers used, etc.). client_max_body_size 0 ; Removes the size limitation on uploads (default 1MB). # enable for ldap auth, fill in ldap details in ldap.conf #include /config/nginx/ldap.conf; Commented out (disabled) by default. When enabled, it will inject the contents of ldap.conf, necessary settings for LDAP auth. # enable for Authelia #include /config/nginx/authelia-server.conf; Commented out (disabled) by default. When enabled, it will inject the contents of authelia-server.conf, necessary settings for Authelia integration. location / { } Location blocks are used for subfolders or paths. After a server block is matched, nginx will look at the subfolder or path requested to match one of the location blocks inside the selected server block. This particular block in our example is for / so it will match any subfolder or path at this address. # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; Commented out (disabled) by default. When enabled, it will use .htpasswd to perform user/pass authentication before allowing access. # enable the next two lines for ldap auth #auth_request /auth; #error_page 401 =200 /login; Commented out (disabled) by default. When enabled, it will use LDAP authentication before allowing access. # enable for Authelia #include /config/nginx/authelia-location.conf; Commented out (disabled) by default. When enabled, it will use Authelia authentication before allowing access. include /config/nginx/proxy.conf ; Injects the contents of proxy.conf, which contains various directives and headers that are common for proxied connections. resolver 127 .0.0.11 valid=30s ; Tells nginx to use the docker dns to resolve the IP address when the container name is used as address in the next line. set $upstream_app heimdall ; set $upstream_port 443 ; set $upstream_proto https ; proxy_pass $upstream_proto://$upstream_app:$upstream_port ; This is a bit of a tricky part. Normally, we could just put in the directive proxy_pass https://heimdall:443; and expect nginx to connect to Heimdall via its container name used as a dns hostname. Although it works for the most part, nginx has an annoying habit. During start, nginx checks all dns hostnames used in proxy_pass statements and if any one of them is not accessible, it refuses to start. We really don't want a stopped proxied container to prevent our webserver from starting up, so we use a trick. If the proxy_pass statement contains a variable instead of a dns hostname , nginx doesn't check whether it's accessible or not during start. So here we are setting 3 variables, one named upstream_app with the value of heimdall , one named $upstream_port , with the value of the internal heimdall port 443 , and one named $upstream_proto with the value set to https . We we use these variables as the address in the proxy_pass directive. That way, if the heimdall container is down for any reason, nginx can still start. When using a variable instead of hostname, we also have to set the resolver to docker dns in the previous line. If the proxied container is not in the same user defined bridge network as SWAG (could be on a remote host, could be using host networking or macvlan), we can change the value of $upstream_app to an IP address instead: set $upstream_app 192.168.1.10; Subfolder proxy conf Here's the preset proxy conf for mytinytodo via a subfolder # works with https://github.com/breakall/mytinytodo-docker # set the mtt_url to 'https://your.domain.com/todo/' in db/config.php location /todo { return 301 $scheme://$host/todo/ ; } location ^~ /todo/ { # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; # enable the next two lines for ldap auth, also customize and enable ldap.conf in the default conf #auth_request /auth; #error_page 401 =200 /ldaplogin; # enable for Authelia, also enable authelia-server.conf in the default site config #include /config/nginx/authelia-location.conf; include /config/nginx/proxy.conf ; resolver 127 .0.0.11 valid=30s ; set $upstream_app mytinytodo ; set $upstream_port 80 ; set $upstream_proto http ; proxy_pass $upstream_proto://$upstream_app:$upstream_port/ ; } Unlike the subdomain proxy confs, here we do not have a server block. That is because all of the subfolder proxy confs get injected into the main server block of our root domain defined in the default site conf. So here we are only defining the location block for our specific subfolders. Many of the elements are the same as the subdomain ones, so for those you can refer to the previous section. Let's take a look at some of the differences. # works with https://github.com/breakall/mytinytodo-docker # set the mtt_url to 'https://your.domain.com/todo/' in db/config.php These are the instructions to get the tinytodo container ready to work with our reverse proxy. location ^~ /todo { return 301 $scheme://$host/todo/ ; } Redirects requests for https://linuxserver-test.com/todo to https://linuxserver-test.com/todo/ (added forward slash at the end). location ^~ /todo/ { } Any requests sent to nginx where the destination starts with https://linuxserver-test.com/todo/ will match this location block. set $upstream_app mytinytodo ; set $upstream_port 80 ; set $upstream_proto http ; proxy_pass $upstream_proto://$upstream_app:$upstream_port/ ; Same as the previous example, we set a variable $upstream_app with the value mytinytodo and tell nginx to use the variable as the address. Keep in mind that the port listed here is the container port because nginx is connecting to this container directly via the docker network. So if our mytinytodo container has a port mapping of -p 8080:80 , we still set $upstream_port variable to 80 . Nginx has an interesting behavior displayed here. Even though we define http://$upstream_mytinytodo:80/ as the address nginx should proxy, nginx actually connects to http://$upstream_mytinytodo:80/todo . Whenever we use a variable as part of the proxy_pass url, nginx automatically appends the defined location (in this case /todo ) to the end of the proxy_pass url before it connects. If we include the subfolder, nginx will try to connect to http://$upstream_mytinytodo:80/todo/todo and will fail. Ombi subdomain reverse proxy example In this example, we will reverse proxy Ombi at the address https://ombi.linuxserver-test.com . First let's make sure that we have a CNAME for ombi set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio ) as described above . We also need to make sure that port 443 on our router is forwarded to the correct port on our server. Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : ombi : image : lscr.io/linuxserver/ombi container_name : ombi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/ombi:/config ports : - 3579:3579 restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped And here are the docker cli versions: Ombi: docker create \\ --name = ombi \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3579 :3579 \\ -v /home/aptalca/appdata/ombi:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ombi SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once our containers up and running (and we confirm we can reach the placeholder page at https://linuxserver-test.com ), we simply rename the file ombi.subdomain.conf.sample under /config/nginx/proxy-confs/ to ombi.subdomain.conf and we restart the SWAG container. Now when we browser to https://ombi.linuxserver-test.com we should see the Ombi gui. Nextcloud subdomain reverse proxy example Nextcloud is a bit trickier because the app has various security measures built-in, forcing us to configure certain options manually. As with the other examples, let's make sure that we have a CNAME for nextcloud set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio ) as described above . For DuckDNS, we do not need to create CNAMES, as all sub-subdomains automatically point to the same IP as our custom subdomain, but we need to make sure that it is the correct IP address for our server. We also need to make sure that port 443 on our router is forwarded to the correct port on our server. In this example we'll use the duckdns wildcard cert, but you can use any Let's Encrypt validation you like as described above Here's a docker compose stack to set up our SWAG, nextcloud and mariadb containers: --- version : \"2.1\" services : nextcloud : image : lscr.io/linuxserver/nextcloud container_name : nextcloud environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/nextcloud/config:/config - /home/aptalca/appdata/nextcloud/data:/data depends_on : - mariadb restart : unless-stopped mariadb : image : lscr.io/linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=mariadbpassword - TZ=Europe/London - MYSQL_DATABASE=nextcloud - MYSQL_USER=ncuser - MYSQL_PASSWORD=ncpassword volumes : - /home/aptalca/appdata/mariadb:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.duckdns.org - SUBDOMAINS=wildcard - VALIDATION=duckdns - DUCKDNSTOKEN=97654867496t0877648659765854 volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped And here are the docker cli versions: Nextcloud: docker create \\ --name = nextcloud \\ --net = lsio -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /home/aptalca/appdata/nextcloud/config:/config \\ -v /home/aptalca/appdata/nextcloud/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/nextcloud Mariadb: docker create \\ --name = mariadb \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = mariadbpassword \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = nextcloud \\ -e MYSQL_USER = ncuser \\ -e MYSQL_PASSWORD = ncpassword \\ -v /home/aptalca/appdata/mariadb:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.duckdns.org \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = duckdns \\ -e DUCKDNSTOKEN = 97654867496t0877648659765854 \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Now we find the file named nextcloud.subdomain.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to nextcloud.subdomain.conf , then restart the SWAG container. If this is the first time we are accessing Nextcloud (we've never accessed it locally before), we can simply navigate to https://nextcloud.linuxserver-test.duckdns.org and we should see the Nextcloud set up page. We'll fill out the info, use the mariadb user ncuser and the password we selected in the environment variable ( ncpassword in the above example) and we'll use mariadb as the Database Host address (container name as dns hostname). We should then be able to go through the intro slides and then see the Nextcloud dashboard with our shiny padlock icon next to the address bar. If this is an existing Nextcloud instance, or we set it up locally via the host IP address and local port, Nextcloud will reject proxied connections. In that case, we have to follow the instructions at the top of the nextcloud.subdomain.conf file: # assuming this container is called \"swag\", edit your nextcloud container's config # located at /config/www/nextcloud/config/config.php and add the following lines before the \");\": # 'trusted_proxies' => ['swag'], # 'overwrite.cli.url' => 'https://nextcloud.your-domain.com/', # 'overwritehost' => 'nextcloud.your-domain.com', # 'overwriteprotocol' => 'https', # # Also don't forget to add your domain name to the trusted domains array. It should look somewhat like this: # array ( # 0 => '192.168.0.1:444', # This line may look different on your setup, don't modify it. # 1 => 'nextcloud.your-domain.com', # ), These settings will tell Nextcloud to respond to queries where the destination address is our domain name. If you followed the above directions to set it up for the first time, you only need to add the line 'trusted_proxies' => ['swag'], , otherwise nextcloud 16+ shows a warning about incorrect reverse proxy settings. By default, HSTS is disabled in SWAG config, because it is a bit of a sledgehammer that prevents loading of any http assets on the entire domain. You can enable it in SWAG's ssl.conf . Plex subfolder reverse proxy example In this example, we will set up Plex as a subfolder so it will be accessible at https://linuxserver-test.com/plex . We will initially set up Plex with host networking through its local IP and will connect to it from the same subnet. If we are on a different subnet, or if using a bridge network, we can use the PLEX_CLAIM variable to automatically claim the server with our plex account. Once the Plex server is set up, it is safe to switch it to bridge networking from host. Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : plex : image : lscr.io/linuxserver/plex container_name : plex network_mode : host environment : - PUID=1000 - PGID=1000 - VERSION=docker volumes : - /home/aptalca/appdata/plex:/config - /home/aptalca/tvshows:/data/tvshows - /home/aptalca/movies:/data/movies restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Here are the docker cli versions: Plex: docker create \\ --name = plex \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e VERSION = docker \\ -v /home/aptalca/appdata/plex:/config \\ -v /home/aptalca/tvshows:/data/tvshows \\ -v /home/aptalca/movies:/data/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/plex SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the containers are set up, we browse to http://LOCALSERVERIP:32400/web and set up our Plex server with our Plex account. Then we can find the file named plex.subfolder.conf.sample under our SWAG container's /config/nginx/proxy-confs folder and rename it to plex.subfolder.conf . If we are using bridge networking for our plex container, we can restart the SWAG container and we should be able to access Plex at https://linuxserver-test.com/plex . If we are using host networking for our plex container, we will also have to make one modification to the plex.subfolder.conf . We need to find the line that reads proxy_pass http://$upstream_plex:32400; and replace $upstream_plex with our Plex server's local IP address (ie. proxy_pass http://192.168.1.10:32400; ). Then we can restart SWAG and access Plex at https://linuxserver-test.com/plex . If we want Plex to always use our domain to connect (including in mobile apps), we can add our url https://linuxserver-test.com/plex into the Custom server access URLs in Plex server settings. After that, it is OK to turn off remote access in Plex server settings and remove the port forwarding port 32400. After that, all connections to our Plex server will go through SWAG reverse proxy over port 443. Using Heimdall as the home page at domain root In this example, we will set Heimdall as our homepage at domain root so when we navigate to https://linuxserver-test.com we will reach Heimdall. As before, we need to make sure port 443 is properly forwarded to our server. We also need to make sure that if we are using the docker cli method, we need to create a user defined bridge network as defined above . Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : heimdall : image : lscr.io/linuxserver/heimdall container_name : heimdall environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/heimdall:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Here are the docker cli versions: Heimdall: docker create \\ --name = heimdall \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /home/aptalca/appdata/heimdall:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/heimdall SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the containers are set up, we'll find the file named heimdall.subfolder.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to heimdall.subfolder.conf . If we look inside that conf file, we'll see that it is set to use location / { , which will cause an issue because there is already a location defined for / inside the default site config for SWAG. So we need to edit the default site config at /config/nginx/site-confs/default and comment out the location block for / inside our main server block so it reads: #location / { # try_files $uri $uri/ /index.html /index.php?$args =404; #} That way, nginx will use the / location block from our heimdall proxy conf instead. After that, when we navigate to https://linuxserver-test.com , we'll see the Heimdall interface. If we want to password protect our new homepage, we can run the following on the host command line to create a new .htpasswd file: docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername . After which, we can activate authentication by editing the heimdall.subfolder.conf file to uncomment the relevant lines so it reads: # enable the next two lines for http auth auth_basic \"Restricted\" ; auth_basic_user_file /config/nginx/.htpasswd ; Troubleshooting We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io Common errors 404 This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled. 502 This error means that nginx can't talk to the application. There is a few common reasons for this: The application and SWAG is not on the same custom docker network Further up we talk about how to set up Docker networking , however there are some other common traps The container name does not match the application name. Covered in the section for Understanding the proxy conf structure You manually changed the port. Also covered in the section for Understanding the proxy conf structure The container originally ran with host networking, or the default bridge. In most cases the contents of /config/nginx/resolver.conf; should be ...resolver 127.0.0.11 valid=30s; , if this is not the case, you can: Delete it, and restart the container to have it regenerate Manually set the content(we wont override it) Final Thoughts This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub . If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn How to Request Support As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread . If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link: Docker run/create or compose yml you used Full docker log ( docker logs swag ) Any relevant conf files (default, nginx.conf or specific proxy conf)","title":"SWAG"},{"location":"general/swag/#swag","text":"The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn","title":"SWAG"},{"location":"general/swag/#table-of-contents","text":"SWAG Table of Contents Introduction What are SSL certs? What is Let's Encrypt (and/or ZeroSSL)? Creating a SWAG container docker cli docker-compose Authorization method Cert Provider (Let's Encrypt vs ZeroSSL) Port forwards Docker networking Container setup examples Create container via http validation Create container via dns validation with a wildcard cert Create container via duckdns validation with a wildcard cert Web hosting examples Simple html web page hosting Hosting a Wordpress site Reverse Proxy Preset proxy confs Understanding the proxy conf structure Subdomain proxy conf Subfolder proxy conf Ombi subdomain reverse proxy example Nextcloud subdomain reverse proxy example Plex subfolder reverse proxy example Using Heimdall as the home page at domain root Troubleshooting Common errors 404 502 Final Thoughts How to Request Support","title":"Table of Contents"},{"location":"general/swag/#introduction","text":"","title":"Introduction"},{"location":"general/swag/#what-are-ssl-certs","text":"SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party.","title":"What are SSL certs?"},{"location":"general/swag/#what-is-lets-encrypt-andor-zerossl","text":"In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL , one can get free certs via automated means. The SWAG docker image , published and maintained by LinuxServer.io , makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image .","title":"What is Let's Encrypt (and/or ZeroSSL)?"},{"location":"general/swag/#creating-a-swag-container","text":"Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios.","title":"Creating a SWAG container"},{"location":"general/swag/#docker-cli","text":"docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = yourdomain.url \\ -e SUBDOMAINS = www, \\ -e VALIDATION = http \\ -e CERTPROVIDER = ` #optional` \\ -e DNSPLUGIN = cloudflare ` #optional` \\ -e DUCKDNSTOKEN = ` #optional` \\ -e EMAIL = ` #optional` \\ -e ONLY_SUBDOMAINS = false ` #optional` \\ -e EXTRA_DOMAINS = ` #optional` \\ -e STAGING = false ` #optional` \\ -p 443 :443 \\ -p 80 :80 ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag","title":"docker cli"},{"location":"general/swag/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - SUBDOMAINS=www, - VALIDATION=http - CERTPROVIDER= #optional - DNSPLUGIN=cloudflare #optional - DUCKDNSTOKEN= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes : - :/config ports : - 443:443 - 80:80 #optional restart : unless-stopped","title":"docker-compose"},{"location":"general/swag/#authorization-method","text":"Our image currently supports three different methods to validate domain ownership: http: Let's Encrypt (acme) server connects to domain on port 80 Can be owned domain or a dynamic dns address dns: Let's Encrypt (acme) server connects to dns provider Api credentials and settings entered into ini files under /config/dns-conf/ Supports wildcard certs Need to have own domain name (non-free) duckdns: Let's Encrypt (acme) server connects to DuckDNS Supports wildcard certs (only for the sub-subdomains) No need for own domain (free) The validation is performed when the container is started for the first time. Nginx won't be up until ssl certs are successfully generated. The certs are valid for 90 days. The container will check the cert expiration status every night and if they are to expire within 30 days, it will attempt to auto-renew. If your certs are about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the auto-renewals failed.","title":"Authorization method"},{"location":"general/swag/#cert-provider-lets-encrypt-vs-zerossl","text":"As of January 2021, SWAG supports getting certs validated by either Let's Encrypt or ZeroSSL . Both services use the ACME protocol as the underlying method to validate ownership. Our Certbot client in the SWAG image is ACME compliant and therefore supports both services. Although very similar, ZeroSSL does (at the time of writing) have a couple of advantages over Let's Encrypt: ZeroSSL provides unlimited certs via ACME and has no rate limits or throttling (it's quite common for new users to get throttled by Let's Encrypt due to multiple unsuccessful attempts to validate) ZeroSSL provides a web interface that allows users to list and manage the certs they have received SWAG currently defaults to Let's Encrypt as the cert provider so as not to break existing installs, however users can override that behavior by setting the environment variable CERTPROVIDER=zerossl to retrieve a cert from ZeroSSL instead. The only gotcha is that ZeroSSL requires the EMAIL env var to be set so the certs can be tied to a ZeroSSL account for management over their web interface.","title":"Cert Provider (Let's Encrypt vs ZeroSSL)"},{"location":"general/swag/#port-forwards","text":"Port 443 mapping is required for access through https://domain.com . However, you don't necessarily need to have it listen on port 443 on the host server. All that is needed is to have port 443 on the router (wan) somehow forward to port 443 inside the container, while it can go through a different port on the host. For instance, it is ok to have port 443 on router (wan) forward to port 444 on the host, and then map port 444 to port 443 in docker run/create or compose yml. Port 80 forwarding is required for http validation only. Same rule as above applies, and it's OK to go from 80 on the router to 81 on the host, mapped to 80 in the container.","title":"Port forwards"},{"location":"general/swag/#docker-networking","text":"SWAG container happily runs with bridge networking. However, the default bridge network in docker does not allow containers to connect each other via container names used as dns hostnames. Therefore, it is recommended to first create a user defined bridge network and attach the containers to that network. If you are using docker-compose, and your services are on the same yaml, you do not need to do this, because docker-compose automatically creates a user defined bridge network and attaches each container to it as long as no other networking option is defined in their config. For the below examples, we will use a network named lsio . We can create it via docker network create lsio . After that, any container that is created with --net=lsio can ping each other by container name as dns hostname. Keep in mind that dns hostnames are meant to be case-insensitive, however container names are case-sensitive. For container names to be used as dns hostnames in nginx, they should be all lowercase as nginx will convert them to all lowercase before trying to resolve.","title":"Docker networking"},{"location":"general/swag/#container-setup-examples","text":"","title":"Container setup examples"},{"location":"general/swag/#create-container-via-http-validation","text":"Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com and ombi.linuxserver-test.com . On the router, forward ports 80 and 443 to your host server. On your dns provider (if using your own domain), create an A record for the main domain and point it to your server IP (wan). Also create CNAMES for www and ombi and point them to the A record for the domain. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = www,ombi \\ -e VALIDATION = http \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once created, we do docker start swag to start it. With docker compose, we can use the following yml: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=www,ombi - VALIDATION=http volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped We can fire up the container with docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . After some initial initialization, we will see the validation steps. After all the steps, it should print Server ready in the logs. Now we can browse to https://www.linuxserver-test.com and we'll see the default landing page displayed.","title":"Create container via http validation"},{"location":"general/swag/#create-container-via-dns-validation-with-a-wildcard-cert","text":"Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com , ombi.linuxserver-test.com and any other subdomain possible. On the router, we'll forward port 443 to our host server (Port 80 forwarding is optional). We'll need to make sure that we are using a dns provider that is supported by this image. Currently the following dns plugins are supported: cloudflare , cloudxns , digitalocean , dnsimple , dnsmadeeasy , google , luadns , nsone , ovh , rfc2136 and route53 . Your dns provider by default is the provider of your domain name and if they are not supported, it is very easy to switch to a different dns provider. Cloudflare is recommended due to being free and reliable. To switch to Cloudflare, you can register for a free account and follow their steps to point the nameservers to Cloudflare. The rest of the instructions assume that we are using the cloudflare dns plugin. On our dns provider, we'll create an A record for the main domain and point it to our server IP (wan). We'll also create a CNAME for * and point it to the A record for the domain. On Cloudflare, we'll click on the orange cloud to turn it grey so that it is dns only and not cached/proxied by Cloudflare, which would add more complexities. Now, let's get the container set up. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag And we start the container via docker start swag With docker compose, we'll use: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Then we'll fire up the container via docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . After some init steps, we'll notice that the container will give an error during validation due to wrong credentials. That's because we didn't enter the correct credentials for the Cloudflare api yet. We can browse to the location /config/dns-conf which is mapped from the host location (according to above settings) /home/aptalca/appdata/swag/dns-conf/ and edit the correct ini file for our dns provider. For Cloudflare, we'll enter our e-mail address and the api key. The api key can be retrieved by going to the Overview page and clicking on Get your API key link. We'll need the Global API Key . Once we enter the credentials into the ini file, we'll restart the docker container via docker restart swag and again watch the logs. After successful validation, we should see the notice Server ready and our webserver should be up and accessible at https://www.linuxserver-test.com .","title":"Create container via dns validation with a wildcard cert"},{"location":"general/swag/#create-container-via-duckdns-validation-with-a-wildcard-cert","text":"We will first need to get a subdomain from DuckDNS . Let's assume we get linuxserver-test so our url will be linuxserver-test.duckdns.org . Then we'll need to make sure that the subdomain points to our server IP (wan) on the DuckDNS website. We can always use our DuckDNS docker image to keep the IP up to date. Don't forget to get the token for your account from DuckDNS. On the router, we'll forward port 443 to our host server (Port 80 forward is optional). Now, let's get the container set up. With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio , and then create the container: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.duckdns.org \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = duckdns \\ -e DUCKDNSTOKEN = 97654867496t0877648659765854 \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag And we start the container via docker start swag With docker compose, we'll use: --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.duckdns.org - SUBDOMAINS=wildcard - VALIDATION=duckdns - DUCKDNSTOKEN=97654867496t0877648659765854 volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Then we'll fire up the container via docker-compose up -d After the container is started, we'll watch the logs with docker logs swag -f . We'll see some initialization and then we will see the validation steps. After all the steps, it should print Server ready in the logs. Now we can access the webserver by browsing to https://www.linuxserver-test.duckdns.org . NOTICE: Due to a DuckDNS limitation, our cert only covers the wildcard subdomains, but it doesn't cover the main url. So if we try to access https://linuxserver-test.duckdns.org , we'll see a browser warning about an invalid ssl cert. But accessing it through the www (or ombi or any other) subdomain should work fine.","title":"Create container via duckdns validation with a wildcard cert"},{"location":"general/swag/#web-hosting-examples","text":"","title":"Web hosting examples"},{"location":"general/swag/#simple-html-web-page-hosting","text":"Once we have a working container, we can drop our web documents in and modify the nginx config files to set up our webserver. All the necessary files are under /config which is mapped from the host location (set by above examples) /home/aptalca/appdata/swag . We can drop all of our web/html files into /config/www . The main site config nginx uses can be found at /config/nginx/site-confs/default . Don't delete this file, as it will be regenerated on container restart, but feel free to modify as needed. By default, it is listening on port 443, and the root folder is set to /config/www , so if you drop a page1.html into that location, it will be accessible at https://linuxserver-test.com/page1.html . To enable listening on port 80 and automatically redirecting to port 443 for enforcing ssl, uncomment the lines at the top of the default site config so it reads: # redirect all traffic to https server { listen 80 ; listen [::]:80 ; server_name _ ; return 301 https:// $host$request_uri ; } After any changes to the config files, simply restart the container via docker restart swag to reload the nginx config.","title":"Simple html web page hosting"},{"location":"general/swag/#hosting-a-wordpress-site","text":"Wordpress requires a mysql database. For that, we'll use the linuxserver MariaDB docker image . Here's a docker compose stack to get both containers set up. For this exercise, we'll utilize the cloudflare dns plugin for Let's Encrypt validation, but you can use any other method to set it up as described in this linked section : --- version : \"2.1\" services : mariadb : image : lscr.io/linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=mariadbpassword - TZ=Europe/London - MYSQL_DATABASE=WP_database - MYSQL_USER=WP_dbuser - MYSQL_PASSWORD=WP_dbpassword volumes : - /home/aptalca/appdata/mariadb:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 depends_on : - mariadb restart : unless-stopped And here are the docker cli versions (make sure you already created the lsio network as described above : Mariadb: docker create \\ --name = mariadb \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = mariadbpassword \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = WP_database \\ -e MYSQL_USER = WP_dbuser \\ -e MYSQL_PASSWORD = WP_dbpassword \\ -v /home/aptalca/appdata/mariadb:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the SWAG container is set up with ssl certs and the webserver is up, we'll download the latest Wordpress and untar it into our www folder: wget https://wordpress.org/latest.tar.gz tar xvf latest.tar.gz -C /home/aptalca/appdata/swag/www/ rm latest.tar.gz Now that we have all the Wordpress files under the container's /config/www/wordpress folder, we'll need to make some adjustments to the nginx configurations. Find the line in /config/nginx/site-confs/default that reads root /config/www; and change it to root /config/www/wordpress; Find the line in /config/nginx/site-confs/default that reads try_files $uri $uri/ /index.html /index.php$is_args$args =404; and change it to try_files $uri $uri/ /index.html /index.php$is_args$args; Alternatively, if you need to run multiple instances of Wordpress, you can leave /config/nginx/site-confs/default entirely unchanged and create new site-confs for each instance of Wordpress. The new site-confs will be slimmed down copies of /config/nginx/site-confs/default . This assumes you will run each instance on a separate subdomain. If you would prefer to have each Wordpress site on a different top level domain, be sure to add each domain to the EXTRA_DOMAINS environment variable. Ex: /config/nginx/site-confs/myfirstsubdomain.linuxserver-test.com.conf server { listen 443 ssl http2 ; # REMOVED default_server listen [::]:443 ssl http2 ; # REMOVED default_server server_name myfirstsubdomain.linuxserver-test.com ; # PUT YOUR DOMAIN HERE root /config/sites/myfirstsubdomain.linuxserver-test.com/www ; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE index index.html index.htm index.php ; location / { try_files $uri $uri/ /index.html /index.php $is_args$args ; # REMOVED =404 } location ~ ^(.+\\.php)(.*)$ { fastcgi_split_path_info ^(.+\\.php)(.*) $ ; fastcgi_pass 127.0.0.1 : 9000 ; fastcgi_index index.php ; include /etc/nginx/fastcgi_params ; } # deny access to .htaccess/.htpasswd files location ~ /\\.ht { deny all ; } } /config/nginx/site-confs/mysecondsubdomain.linuxserver-test.com.conf server { listen 443 ssl http2 ; # REMOVED default_server listen [::]:443 ssl http2 ; # REMOVED default_server server_name mysecondsubdomain.linuxserver-test.com ; # PUT YOUR DOMAIN HERE root /config/sites/mysecondsubdomain.linuxserver-test.com/www ; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE index index.html index.htm index.php ; location / { try_files $uri $uri/ /index.html /index.php $is_args$args ; # REMOVED =404 } location ~ ^(.+\\.php)(.*)$ { fastcgi_split_path_info ^(.+\\.php)(.*) $ ; fastcgi_pass 127.0.0.1 : 9000 ; fastcgi_index index.php ; include /etc/nginx/fastcgi_params ; } # deny access to .htaccess/.htpasswd files location ~ /\\.ht { deny all ; } } Now that you have completed changing your nginx configurations you need to restart the SWAG container. Now we should be able to access our Wordpress config page at https://linuxserver-test.com/wp-admin/install.php . We'll go ahead and enter mariadb as the Database Host address (we are using the container name as the dns hostname since both containers are in the same user defined bridge network), and also enter the Database Name, user and password we used in the mariadb config above ( WP_database , WP_dbuser and WP_dbpassword ). Once we go through the rest of the install steps, our Wordpress instance should be fully set up and available at https://linuxserver-test.com . If you would like to have http requests on port 80 enabled and auto redirected to https on port 443, uncomment the relevant lines at the top of the default site config to read: # redirect all traffic to https server { listen 80 ; listen [::]:80 ; server_name _ ; return 301 https:// $host$request_uri ; }","title":"Hosting a Wordpress site"},{"location":"general/swag/#reverse-proxy","text":"A reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as if they originated from the Web server itself (Shamelessly borrowed from another post on our blog ). In this case, a user or a client browser can connect to our SWAG container via https on port 443, request a service such as Ombi, then our SWAG container connects to the ombi container, retrieves the data and passes it on to the client via https with our trusted cert. The connection to ombi is local and does not need to be encrypted, but all communication between our SWAG container and the client browser will be encrypted.","title":"Reverse Proxy"},{"location":"general/swag/#preset-proxy-confs","text":"Our SWAG image comes with a list of preset reverse proxy confs for popular apps and services. They are hosted on Github and are pulled into the /config/nginx/proxy-confs folder as inactive sample files. To activate, one must rename a conf file to remove .sample from the filename and restart the SWAG container. Any proxy conf file in that folder with a name that matches *.subdomain.conf or *.subfolder.conf will be loaded in nginx during container start. Most proxy confs work without any modification, but some may require other changes. All the required changes are listed at the top of each proxy conf. The conf files use container names to reach other containers and therefore the proxied containers should be named the same as listed in our documentation for each container. The conf files also require that the SWAG container is in the same user defined bridge network as the other container so they can reach each other via container name as dns hostnames. Make sure you follow the instructions listed above in the Docker networking section .","title":"Preset proxy confs"},{"location":"general/swag/#understanding-the-proxy-conf-structure","text":"","title":"Understanding the proxy conf structure"},{"location":"general/swag/#subdomain-proxy-conf","text":"Here's the preset proxy conf for Heimdall as a subdomain (ie. https://heimdall.linuxserver-test.com ): # make sure that your dns has a cname set for heimdall server { listen 443 ssl ; listen [::]:443 ssl ; server_name heimdall.* ; include /config/nginx/ssl.conf ; client_max_body_size 0 ; # enable for ldap auth, fill in ldap details in ldap.conf #include /config/nginx/ldap.conf; # enable for Authelia #include /config/nginx/authelia-server.conf; location / { # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; # enable the next two lines for ldap auth #auth_request /auth; #error_page 401 =200 /ldaplogin; # enable for Authelia #include /config/nginx/authelia-location.conf; include /config/nginx/proxy.conf ; resolver 127 .0.0.11 valid=30s ; set $upstream_app heimdall ; set $upstream_port 443 ; set $upstream_proto https ; proxy_pass $upstream_proto://$upstream_app:$upstream_port ; } } Let's dissect this conf to look at what each directive or block does. server { } This is our server block. Whenever nginx gets a request from a client, it determines which server block should be processed based on the destination server name, port and other relevant info, and the matching server block determines how nginx handles and responds to the request. listen 443 ssl ; listen [::]:443 ssl ; This means that only requests coming to port 443 will match this server block. server_name heimdall.* ; Only destination addresses that match heimdall.* will match this server block. include /config/nginx/ssl.conf ; This directive injects the contents of our ssl.conf file here, which contains all ssl related settings (cert location, ciphers used, etc.). client_max_body_size 0 ; Removes the size limitation on uploads (default 1MB). # enable for ldap auth, fill in ldap details in ldap.conf #include /config/nginx/ldap.conf; Commented out (disabled) by default. When enabled, it will inject the contents of ldap.conf, necessary settings for LDAP auth. # enable for Authelia #include /config/nginx/authelia-server.conf; Commented out (disabled) by default. When enabled, it will inject the contents of authelia-server.conf, necessary settings for Authelia integration. location / { } Location blocks are used for subfolders or paths. After a server block is matched, nginx will look at the subfolder or path requested to match one of the location blocks inside the selected server block. This particular block in our example is for / so it will match any subfolder or path at this address. # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; Commented out (disabled) by default. When enabled, it will use .htpasswd to perform user/pass authentication before allowing access. # enable the next two lines for ldap auth #auth_request /auth; #error_page 401 =200 /login; Commented out (disabled) by default. When enabled, it will use LDAP authentication before allowing access. # enable for Authelia #include /config/nginx/authelia-location.conf; Commented out (disabled) by default. When enabled, it will use Authelia authentication before allowing access. include /config/nginx/proxy.conf ; Injects the contents of proxy.conf, which contains various directives and headers that are common for proxied connections. resolver 127 .0.0.11 valid=30s ; Tells nginx to use the docker dns to resolve the IP address when the container name is used as address in the next line. set $upstream_app heimdall ; set $upstream_port 443 ; set $upstream_proto https ; proxy_pass $upstream_proto://$upstream_app:$upstream_port ; This is a bit of a tricky part. Normally, we could just put in the directive proxy_pass https://heimdall:443; and expect nginx to connect to Heimdall via its container name used as a dns hostname. Although it works for the most part, nginx has an annoying habit. During start, nginx checks all dns hostnames used in proxy_pass statements and if any one of them is not accessible, it refuses to start. We really don't want a stopped proxied container to prevent our webserver from starting up, so we use a trick. If the proxy_pass statement contains a variable instead of a dns hostname , nginx doesn't check whether it's accessible or not during start. So here we are setting 3 variables, one named upstream_app with the value of heimdall , one named $upstream_port , with the value of the internal heimdall port 443 , and one named $upstream_proto with the value set to https . We we use these variables as the address in the proxy_pass directive. That way, if the heimdall container is down for any reason, nginx can still start. When using a variable instead of hostname, we also have to set the resolver to docker dns in the previous line. If the proxied container is not in the same user defined bridge network as SWAG (could be on a remote host, could be using host networking or macvlan), we can change the value of $upstream_app to an IP address instead: set $upstream_app 192.168.1.10;","title":"Subdomain proxy conf"},{"location":"general/swag/#subfolder-proxy-conf","text":"Here's the preset proxy conf for mytinytodo via a subfolder # works with https://github.com/breakall/mytinytodo-docker # set the mtt_url to 'https://your.domain.com/todo/' in db/config.php location /todo { return 301 $scheme://$host/todo/ ; } location ^~ /todo/ { # enable the next two lines for http auth #auth_basic \"Restricted\"; #auth_basic_user_file /config/nginx/.htpasswd; # enable the next two lines for ldap auth, also customize and enable ldap.conf in the default conf #auth_request /auth; #error_page 401 =200 /ldaplogin; # enable for Authelia, also enable authelia-server.conf in the default site config #include /config/nginx/authelia-location.conf; include /config/nginx/proxy.conf ; resolver 127 .0.0.11 valid=30s ; set $upstream_app mytinytodo ; set $upstream_port 80 ; set $upstream_proto http ; proxy_pass $upstream_proto://$upstream_app:$upstream_port/ ; } Unlike the subdomain proxy confs, here we do not have a server block. That is because all of the subfolder proxy confs get injected into the main server block of our root domain defined in the default site conf. So here we are only defining the location block for our specific subfolders. Many of the elements are the same as the subdomain ones, so for those you can refer to the previous section. Let's take a look at some of the differences. # works with https://github.com/breakall/mytinytodo-docker # set the mtt_url to 'https://your.domain.com/todo/' in db/config.php These are the instructions to get the tinytodo container ready to work with our reverse proxy. location ^~ /todo { return 301 $scheme://$host/todo/ ; } Redirects requests for https://linuxserver-test.com/todo to https://linuxserver-test.com/todo/ (added forward slash at the end). location ^~ /todo/ { } Any requests sent to nginx where the destination starts with https://linuxserver-test.com/todo/ will match this location block. set $upstream_app mytinytodo ; set $upstream_port 80 ; set $upstream_proto http ; proxy_pass $upstream_proto://$upstream_app:$upstream_port/ ; Same as the previous example, we set a variable $upstream_app with the value mytinytodo and tell nginx to use the variable as the address. Keep in mind that the port listed here is the container port because nginx is connecting to this container directly via the docker network. So if our mytinytodo container has a port mapping of -p 8080:80 , we still set $upstream_port variable to 80 . Nginx has an interesting behavior displayed here. Even though we define http://$upstream_mytinytodo:80/ as the address nginx should proxy, nginx actually connects to http://$upstream_mytinytodo:80/todo . Whenever we use a variable as part of the proxy_pass url, nginx automatically appends the defined location (in this case /todo ) to the end of the proxy_pass url before it connects. If we include the subfolder, nginx will try to connect to http://$upstream_mytinytodo:80/todo/todo and will fail.","title":"Subfolder proxy conf"},{"location":"general/swag/#ombi-subdomain-reverse-proxy-example","text":"In this example, we will reverse proxy Ombi at the address https://ombi.linuxserver-test.com . First let's make sure that we have a CNAME for ombi set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio ) as described above . We also need to make sure that port 443 on our router is forwarded to the correct port on our server. Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : ombi : image : lscr.io/linuxserver/ombi container_name : ombi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/ombi:/config ports : - 3579:3579 restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped And here are the docker cli versions: Ombi: docker create \\ --name = ombi \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3579 :3579 \\ -v /home/aptalca/appdata/ombi:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ombi SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once our containers up and running (and we confirm we can reach the placeholder page at https://linuxserver-test.com ), we simply rename the file ombi.subdomain.conf.sample under /config/nginx/proxy-confs/ to ombi.subdomain.conf and we restart the SWAG container. Now when we browser to https://ombi.linuxserver-test.com we should see the Ombi gui.","title":"Ombi subdomain reverse proxy example"},{"location":"general/swag/#nextcloud-subdomain-reverse-proxy-example","text":"Nextcloud is a bit trickier because the app has various security measures built-in, forcing us to configure certain options manually. As with the other examples, let's make sure that we have a CNAME for nextcloud set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio ) as described above . For DuckDNS, we do not need to create CNAMES, as all sub-subdomains automatically point to the same IP as our custom subdomain, but we need to make sure that it is the correct IP address for our server. We also need to make sure that port 443 on our router is forwarded to the correct port on our server. In this example we'll use the duckdns wildcard cert, but you can use any Let's Encrypt validation you like as described above Here's a docker compose stack to set up our SWAG, nextcloud and mariadb containers: --- version : \"2.1\" services : nextcloud : image : lscr.io/linuxserver/nextcloud container_name : nextcloud environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/nextcloud/config:/config - /home/aptalca/appdata/nextcloud/data:/data depends_on : - mariadb restart : unless-stopped mariadb : image : lscr.io/linuxserver/mariadb container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=mariadbpassword - TZ=Europe/London - MYSQL_DATABASE=nextcloud - MYSQL_USER=ncuser - MYSQL_PASSWORD=ncpassword volumes : - /home/aptalca/appdata/mariadb:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.duckdns.org - SUBDOMAINS=wildcard - VALIDATION=duckdns - DUCKDNSTOKEN=97654867496t0877648659765854 volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped And here are the docker cli versions: Nextcloud: docker create \\ --name = nextcloud \\ --net = lsio -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /home/aptalca/appdata/nextcloud/config:/config \\ -v /home/aptalca/appdata/nextcloud/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/nextcloud Mariadb: docker create \\ --name = mariadb \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = mariadbpassword \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = nextcloud \\ -e MYSQL_USER = ncuser \\ -e MYSQL_PASSWORD = ncpassword \\ -v /home/aptalca/appdata/mariadb:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.duckdns.org \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = duckdns \\ -e DUCKDNSTOKEN = 97654867496t0877648659765854 \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Now we find the file named nextcloud.subdomain.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to nextcloud.subdomain.conf , then restart the SWAG container. If this is the first time we are accessing Nextcloud (we've never accessed it locally before), we can simply navigate to https://nextcloud.linuxserver-test.duckdns.org and we should see the Nextcloud set up page. We'll fill out the info, use the mariadb user ncuser and the password we selected in the environment variable ( ncpassword in the above example) and we'll use mariadb as the Database Host address (container name as dns hostname). We should then be able to go through the intro slides and then see the Nextcloud dashboard with our shiny padlock icon next to the address bar. If this is an existing Nextcloud instance, or we set it up locally via the host IP address and local port, Nextcloud will reject proxied connections. In that case, we have to follow the instructions at the top of the nextcloud.subdomain.conf file: # assuming this container is called \"swag\", edit your nextcloud container's config # located at /config/www/nextcloud/config/config.php and add the following lines before the \");\": # 'trusted_proxies' => ['swag'], # 'overwrite.cli.url' => 'https://nextcloud.your-domain.com/', # 'overwritehost' => 'nextcloud.your-domain.com', # 'overwriteprotocol' => 'https', # # Also don't forget to add your domain name to the trusted domains array. It should look somewhat like this: # array ( # 0 => '192.168.0.1:444', # This line may look different on your setup, don't modify it. # 1 => 'nextcloud.your-domain.com', # ), These settings will tell Nextcloud to respond to queries where the destination address is our domain name. If you followed the above directions to set it up for the first time, you only need to add the line 'trusted_proxies' => ['swag'], , otherwise nextcloud 16+ shows a warning about incorrect reverse proxy settings. By default, HSTS is disabled in SWAG config, because it is a bit of a sledgehammer that prevents loading of any http assets on the entire domain. You can enable it in SWAG's ssl.conf .","title":"Nextcloud subdomain reverse proxy example"},{"location":"general/swag/#plex-subfolder-reverse-proxy-example","text":"In this example, we will set up Plex as a subfolder so it will be accessible at https://linuxserver-test.com/plex . We will initially set up Plex with host networking through its local IP and will connect to it from the same subnet. If we are on a different subnet, or if using a bridge network, we can use the PLEX_CLAIM variable to automatically claim the server with our plex account. Once the Plex server is set up, it is safe to switch it to bridge networking from host. Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : plex : image : lscr.io/linuxserver/plex container_name : plex network_mode : host environment : - PUID=1000 - PGID=1000 - VERSION=docker volumes : - /home/aptalca/appdata/plex:/config - /home/aptalca/tvshows:/data/tvshows - /home/aptalca/movies:/data/movies restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Here are the docker cli versions: Plex: docker create \\ --name = plex \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e VERSION = docker \\ -v /home/aptalca/appdata/plex:/config \\ -v /home/aptalca/tvshows:/data/tvshows \\ -v /home/aptalca/movies:/data/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/plex SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the containers are set up, we browse to http://LOCALSERVERIP:32400/web and set up our Plex server with our Plex account. Then we can find the file named plex.subfolder.conf.sample under our SWAG container's /config/nginx/proxy-confs folder and rename it to plex.subfolder.conf . If we are using bridge networking for our plex container, we can restart the SWAG container and we should be able to access Plex at https://linuxserver-test.com/plex . If we are using host networking for our plex container, we will also have to make one modification to the plex.subfolder.conf . We need to find the line that reads proxy_pass http://$upstream_plex:32400; and replace $upstream_plex with our Plex server's local IP address (ie. proxy_pass http://192.168.1.10:32400; ). Then we can restart SWAG and access Plex at https://linuxserver-test.com/plex . If we want Plex to always use our domain to connect (including in mobile apps), we can add our url https://linuxserver-test.com/plex into the Custom server access URLs in Plex server settings. After that, it is OK to turn off remote access in Plex server settings and remove the port forwarding port 32400. After that, all connections to our Plex server will go through SWAG reverse proxy over port 443.","title":"Plex subfolder reverse proxy example"},{"location":"general/swag/#using-heimdall-as-the-home-page-at-domain-root","text":"In this example, we will set Heimdall as our homepage at domain root so when we navigate to https://linuxserver-test.com we will reach Heimdall. As before, we need to make sure port 443 is properly forwarded to our server. We also need to make sure that if we are using the docker cli method, we need to create a user defined bridge network as defined above . Here's a docker compose stack we can use to set up both containers: --- version : \"2.1\" services : heimdall : image : lscr.io/linuxserver/heimdall container_name : heimdall environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /home/aptalca/appdata/heimdall:/config restart : unless-stopped swag : image : lscr.io/linuxserver/swag container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=linuxserver-test.com - SUBDOMAINS=wildcard - VALIDATION=dns - DNSPLUGIN=cloudflare volumes : - /home/aptalca/appdata/swag:/config ports : - 443:443 - 80:80 restart : unless-stopped Here are the docker cli versions: Heimdall: docker create \\ --name = heimdall \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /home/aptalca/appdata/heimdall:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/heimdall SWAG: docker create \\ --name = swag \\ --cap-add = NET_ADMIN \\ --net = lsio \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = linuxserver-test.com \\ -e SUBDOMAINS = wildcard \\ -e VALIDATION = dns \\ -e DNSPLUGIN = cloudflare \\ -p 443 :443 \\ -p 80 :80 \\ -v /home/aptalca/appdata/swag:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag Once the containers are set up, we'll find the file named heimdall.subfolder.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to heimdall.subfolder.conf . If we look inside that conf file, we'll see that it is set to use location / { , which will cause an issue because there is already a location defined for / inside the default site config for SWAG. So we need to edit the default site config at /config/nginx/site-confs/default and comment out the location block for / inside our main server block so it reads: #location / { # try_files $uri $uri/ /index.html /index.php?$args =404; #} That way, nginx will use the / location block from our heimdall proxy conf instead. After that, when we navigate to https://linuxserver-test.com , we'll see the Heimdall interface. If we want to password protect our new homepage, we can run the following on the host command line to create a new .htpasswd file: docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername . After which, we can activate authentication by editing the heimdall.subfolder.conf file to uncomment the relevant lines so it reads: # enable the next two lines for http auth auth_basic \"Restricted\" ; auth_basic_user_file /config/nginx/.htpasswd ;","title":"Using Heimdall as the home page at domain root"},{"location":"general/swag/#troubleshooting","text":"We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io","title":"Troubleshooting"},{"location":"general/swag/#common-errors","text":"","title":"Common errors"},{"location":"general/swag/#404","text":"This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.","title":"404"},{"location":"general/swag/#502","text":"This error means that nginx can't talk to the application. There is a few common reasons for this: The application and SWAG is not on the same custom docker network Further up we talk about how to set up Docker networking , however there are some other common traps The container name does not match the application name. Covered in the section for Understanding the proxy conf structure You manually changed the port. Also covered in the section for Understanding the proxy conf structure The container originally ran with host networking, or the default bridge. In most cases the contents of /config/nginx/resolver.conf; should be ...resolver 127.0.0.11 valid=30s; , if this is not the case, you can: Delete it, and restart the container to have it regenerate Manually set the content(we wont override it)","title":"502"},{"location":"general/swag/#final-thoughts","text":"This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub . If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn","title":"Final Thoughts"},{"location":"general/swag/#how-to-request-support","text":"As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread . If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link: Docker run/create or compose yml you used Full docker log ( docker logs swag ) Any relevant conf files (default, nginx.conf or specific proxy conf)","title":"How to Request Support"},{"location":"general/understanding-puid-and-pgid/","text":"Understanding PUID and PGID {% hint style=\"info\" %} We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID. Why use these? Docker runs all of its containers under the root user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as root . This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this). Another issue is file management within the container's mapped volumes. If the process is running under root , all files and directories created during the container's lifespan will be owned by root , thus becoming inaccessible by you. Using the PUID and PGID allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly. Using the variables When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command: docker create --name = beets -e PUID = 1000 -e PGID = 1000 linuxserver/beets Or, if you use docker-compose , add them to the environment: section: environment : - PUID=1000 - PGID=1000 It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid . id $user","title":"Understanding PUID and PGID"},{"location":"general/understanding-puid-and-pgid/#understanding-puid-and-pgid","text":"{% hint style=\"info\" %} We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.","title":"Understanding PUID and PGID"},{"location":"general/understanding-puid-and-pgid/#why-use-these","text":"Docker runs all of its containers under the root user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as root . This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this). Another issue is file management within the container's mapped volumes. If the process is running under root , all files and directories created during the container's lifespan will be owned by root , thus becoming inaccessible by you. Using the PUID and PGID allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly.","title":"Why use these?"},{"location":"general/understanding-puid-and-pgid/#using-the-variables","text":"When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command: docker create --name = beets -e PUID = 1000 -e PGID = 1000 linuxserver/beets Or, if you use docker-compose , add them to the environment: section: environment : - PUID=1000 - PGID=1000 It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid . id $user","title":"Using the variables"},{"location":"general/updating-our-containers/","text":"Updating our containers Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features. Steps required to update Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container. Stop the container Firstly, stop the container. docker stop Remove the container Once the container has been stopped, remove it. Important : Did you remember to persist the /config volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. Read up on why this is important . docker rm Pull the latest version Now you can pull the latest version of the application image from Docker Hub. docker pull linuxserver/ Recreate the container Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been outlined in our documentation . docker create \\ --name = \\ -v :/config \\ -e PUID = \\ -e PGID = \\ -p : \\ linuxserver/ Docker Compose It is also possible to update a single container using Docker Compose: docker-compose pull linuxserver/ docker-compose up -d Or, to update all containers at once: docker-compose pull docker-compose up -d Removing old images Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the old version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can prune old images from your system, which will free up space: docker image prune","title":"Updating our containers"},{"location":"general/updating-our-containers/#updating-our-containers","text":"Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features.","title":"Updating our containers"},{"location":"general/updating-our-containers/#steps-required-to-update","text":"Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container.","title":"Steps required to update"},{"location":"general/updating-our-containers/#stop-the-container","text":"Firstly, stop the container. docker stop ","title":"Stop the container"},{"location":"general/updating-our-containers/#remove-the-container","text":"Once the container has been stopped, remove it. Important : Did you remember to persist the /config volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. Read up on why this is important . docker rm ","title":"Remove the container"},{"location":"general/updating-our-containers/#pull-the-latest-version","text":"Now you can pull the latest version of the application image from Docker Hub. docker pull linuxserver/","title":"Pull the latest version"},{"location":"general/updating-our-containers/#recreate-the-container","text":"Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been outlined in our documentation . docker create \\ --name = \\ -v :/config \\ -e PUID = \\ -e PGID = \\ -p : \\ linuxserver/","title":"Recreate the container"},{"location":"general/updating-our-containers/#docker-compose","text":"It is also possible to update a single container using Docker Compose: docker-compose pull linuxserver/ docker-compose up -d Or, to update all containers at once: docker-compose pull docker-compose up -d","title":"Docker Compose"},{"location":"general/updating-our-containers/#removing-old-images","text":"Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the old version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can prune old images from your system, which will free up space: docker image prune","title":"Removing old images"},{"location":"general/volumes/","text":"Volumes In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them. There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays. Mapping a volume to your container Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the /config directory. Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory /opt/appdata . Under this tree, you can create a single configuration directory for each of your containers. When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory: docker create --name my_container \\ -v /opt/appdata/my_config:/config \\ linuxserver/ The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory. Remember : When dealing with mapping overlays, it always reads host:container You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the /config directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.","title":"Volumes"},{"location":"general/volumes/#volumes","text":"In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them. There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays.","title":"Volumes"},{"location":"general/volumes/#mapping-a-volume-to-your-container","text":"Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the /config directory. Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory /opt/appdata . Under this tree, you can create a single configuration directory for each of your containers. When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory: docker create --name my_container \\ -v /opt/appdata/my_config:/config \\ linuxserver/ The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory. Remember : When dealing with mapping overlays, it always reads host:container You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the /config directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.","title":"Mapping a volume to your container"},{"location":"images/","text":"Images Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.","title":"Images"},{"location":"images/#images","text":"Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.","title":"Images"},{"location":"images/docker-adguardhome-sync/","text":"linuxserver/adguardhome-sync Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from GitHub Application Setup Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : adguardhome-sync : image : lscr.io/linuxserver/adguardhome-sync:latest container_name : adguardhome-sync environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - CONFIGFILE=/config/adguardhome-sync.yaml #optional volumes : - /path/to/appdata/config:/config ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = adguardhome-sync \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e CONFIGFILE = /config/adguardhome-sync.yaml ` #optional` \\ -p 8080 :8080 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/adguardhome-sync:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Port for AdGuardHome Sync's web API. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York CONFIGFILE=/config/adguardhome-sync.yaml Set a custom config file. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it adguardhome-sync /bin/bash To monitor the logs of the container in realtime: docker logs -f adguardhome-sync Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' adguardhome-sync Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/adguardhome-sync:latest Versions 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.12.21: - Rebase to Alpine 3.15. 09.08.21: - Rebase to Alpine 3.14. 08.04.21: - Initial Release.","title":"adguardhome-sync"},{"location":"images/docker-adguardhome-sync/#linuxserveradguardhome-sync","text":"Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.","title":"linuxserver/adguardhome-sync"},{"location":"images/docker-adguardhome-sync/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-adguardhome-sync/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from GitHub","title":"Version Tags"},{"location":"images/docker-adguardhome-sync/#application-setup","text":"Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync .","title":"Application Setup"},{"location":"images/docker-adguardhome-sync/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-adguardhome-sync/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : adguardhome-sync : image : lscr.io/linuxserver/adguardhome-sync:latest container_name : adguardhome-sync environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - CONFIGFILE=/config/adguardhome-sync.yaml #optional volumes : - /path/to/appdata/config:/config ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-adguardhome-sync/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = adguardhome-sync \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e CONFIGFILE = /config/adguardhome-sync.yaml ` #optional` \\ -p 8080 :8080 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/adguardhome-sync:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-adguardhome-sync/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-adguardhome-sync/#ports-p","text":"Parameter Function 8080 Port for AdGuardHome Sync's web API.","title":"Ports (-p)"},{"location":"images/docker-adguardhome-sync/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York CONFIGFILE=/config/adguardhome-sync.yaml Set a custom config file.","title":"Environment Variables (-e)"},{"location":"images/docker-adguardhome-sync/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-adguardhome-sync/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-adguardhome-sync/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-adguardhome-sync/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-adguardhome-sync/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-adguardhome-sync/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-adguardhome-sync/#support-info","text":"Shell access whilst the container is running: docker exec -it adguardhome-sync /bin/bash To monitor the logs of the container in realtime: docker logs -f adguardhome-sync Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' adguardhome-sync Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/adguardhome-sync:latest","title":"Support Info"},{"location":"images/docker-adguardhome-sync/#versions","text":"03.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.12.21: - Rebase to Alpine 3.15. 09.08.21: - Rebase to Alpine 3.14. 08.04.21: - Initial Release.","title":"Versions"},{"location":"images/docker-airsonic-advanced/","text":"linuxserver/airsonic-advanced Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Latest releases of Airsonic-Advanced Application Setup We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files. Please see notes about upgrading from v10 to v11 here Access WebUI at :4040 . Default user/pass is admin/admin Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes. Note that if you want to use Airsonic's Java jukebox player , then PGID will need to match the group of your sound device (e.g. /dev/snd ). Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : airsonic-advanced : image : lscr.io/linuxserver/airsonic-advanced:latest container_name : airsonic-advanced environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional - JAVA_OPTS= #optional volumes : - :/config - :/music - :/playlists - :/podcasts - :/media #optional ports : - 4040:4040 devices : - /dev/snd:/dev/snd #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = airsonic-advanced \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -p 4040 :4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media ` #optional` \\ --device /dev/snd:/dev/snd ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/airsonic-advanced:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4040 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups. JAVA_OPTS= For passing additional java options. Volume Mappings ( -v ) Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media. Device Mappings ( --device ) Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it airsonic-advanced /bin/bash To monitor the logs of the container in realtime: docker logs -f airsonic-advanced Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic-advanced Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic-advanced:latest Versions 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 25.07.22: - Add vorbis-tools. 02.01.22: - Initial Release.","title":"airsonic-advanced"},{"location":"images/docker-airsonic-advanced/#linuxserverairsonic-advanced","text":"Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.","title":"linuxserver/airsonic-advanced"},{"location":"images/docker-airsonic-advanced/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-airsonic-advanced/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Latest releases of Airsonic-Advanced","title":"Version Tags"},{"location":"images/docker-airsonic-advanced/#application-setup","text":"We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files. Please see notes about upgrading from v10 to v11 here Access WebUI at :4040 . Default user/pass is admin/admin Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes. Note that if you want to use Airsonic's Java jukebox player , then PGID will need to match the group of your sound device (e.g. /dev/snd ).","title":"Application Setup"},{"location":"images/docker-airsonic-advanced/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-airsonic-advanced/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : airsonic-advanced : image : lscr.io/linuxserver/airsonic-advanced:latest container_name : airsonic-advanced environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional - JAVA_OPTS= #optional volumes : - :/config - :/music - :/playlists - :/podcasts - :/media #optional ports : - 4040:4040 devices : - /dev/snd:/dev/snd #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-airsonic-advanced/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = airsonic-advanced \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -p 4040 :4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media ` #optional` \\ --device /dev/snd:/dev/snd ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/airsonic-advanced:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-airsonic-advanced/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-airsonic-advanced/#ports-p","text":"Parameter Function 4040 WebUI","title":"Ports (-p)"},{"location":"images/docker-airsonic-advanced/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups. JAVA_OPTS= For passing additional java options.","title":"Environment Variables (-e)"},{"location":"images/docker-airsonic-advanced/#volume-mappings-v","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media.","title":"Volume Mappings (-v)"},{"location":"images/docker-airsonic-advanced/#device-mappings-device","text":"Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player.","title":"Device Mappings (--device)"},{"location":"images/docker-airsonic-advanced/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-airsonic-advanced/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-airsonic-advanced/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-airsonic-advanced/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-airsonic-advanced/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-airsonic-advanced/#support-info","text":"Shell access whilst the container is running: docker exec -it airsonic-advanced /bin/bash To monitor the logs of the container in realtime: docker logs -f airsonic-advanced Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic-advanced Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic-advanced:latest","title":"Support Info"},{"location":"images/docker-airsonic-advanced/#versions","text":"23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 25.07.22: - Add vorbis-tools. 02.01.22: - Initial Release.","title":"Versions"},{"location":"images/docker-airsonic/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced linuxserver/airsonic Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Application Setup Access WebUI at :4040 . Default user/pass is admin/admin Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes. Note that if you want to use Airsonic's Java jukebox player , then PGID will need to match the group of your sound device (e.g. /dev/snd ). Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : airsonic : image : lscr.io/linuxserver/airsonic container_name : airsonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional - JAVA_OPTS= #optional volumes : - :/config - :/music - :/playlists - :/podcasts - :/media #optional ports : - 4040:4040 devices : - /dev/snd:/dev/snd #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = airsonic \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -p 4040 :4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media ` #optional` \\ --device /dev/snd:/dev/snd ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/airsonic Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4040 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups. JAVA_OPTS= For passing additional java options. Volume Mappings ( -v ) Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media. Device Mappings ( --device ) Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it airsonic /bin/bash To monitor the logs of the container in realtime: docker logs -f airsonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic Versions 13.01.22: - Deprecate in favor of airsonic-advanced. 24.03.19: - Switching to new Base images, shift to arm32v7 tag. 26.01.19: - Add pipeline logic and multi arch. 05.01.19: - Linting fixes. 27.08.18: - Use new inhouse java baseimage for quicker builds. 23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's. 22.04.18: - Add the forgotten JAVA_OPTS to the run command. 29.12.17: - Initial Release.","title":"airsonic"},{"location":"images/docker-airsonic/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced","title":"DEPRECATION NOTICE"},{"location":"images/docker-airsonic/#linuxserverairsonic","text":"Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.","title":"linuxserver/airsonic"},{"location":"images/docker-airsonic/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-airsonic/#application-setup","text":"Access WebUI at :4040 . Default user/pass is admin/admin Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes. Note that if you want to use Airsonic's Java jukebox player , then PGID will need to match the group of your sound device (e.g. /dev/snd ).","title":"Application Setup"},{"location":"images/docker-airsonic/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-airsonic/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : airsonic : image : lscr.io/linuxserver/airsonic container_name : airsonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional - JAVA_OPTS= #optional volumes : - :/config - :/music - :/playlists - :/podcasts - :/media #optional ports : - 4040:4040 devices : - /dev/snd:/dev/snd #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-airsonic/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = airsonic \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -p 4040 :4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media ` #optional` \\ --device /dev/snd:/dev/snd ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/airsonic","title":"docker cli (click here for more info)"},{"location":"images/docker-airsonic/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-airsonic/#ports-p","text":"Parameter Function 4040 WebUI","title":"Ports (-p)"},{"location":"images/docker-airsonic/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups. JAVA_OPTS= For passing additional java options.","title":"Environment Variables (-e)"},{"location":"images/docker-airsonic/#volume-mappings-v","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media.","title":"Volume Mappings (-v)"},{"location":"images/docker-airsonic/#device-mappings-device","text":"Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player.","title":"Device Mappings (--device)"},{"location":"images/docker-airsonic/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-airsonic/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-airsonic/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-airsonic/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-airsonic/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-airsonic/#support-info","text":"Shell access whilst the container is running: docker exec -it airsonic /bin/bash To monitor the logs of the container in realtime: docker logs -f airsonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic","title":"Support Info"},{"location":"images/docker-airsonic/#versions","text":"13.01.22: - Deprecate in favor of airsonic-advanced. 24.03.19: - Switching to new Base images, shift to arm32v7 tag. 26.01.19: - Add pipeline logic and multi arch. 05.01.19: - Linting fixes. 27.08.18: - Use new inhouse java baseimage for quicker builds. 23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's. 22.04.18: - Add the forgotten JAVA_OPTS to the run command. 29.12.17: - Initial Release.","title":"Versions"},{"location":"images/docker-apprise-api/","text":"linuxserver/apprise-api Apprise-api Takes advantage of Apprise through your network with a user-friendly API. Send notifications to more then 65+ services. An incredibly lightweight gateway to Apprise. A production ready micro-service at your disposal. Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : apprise-api : image : lscr.io/linuxserver/apprise-api:latest container_name : apprise-api environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = apprise-api \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/apprise-api:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 Port for apprise's interface and API. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where config is stored. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it apprise-api /bin/bash To monitor the logs of the container in realtime: docker logs -f apprise-api Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' apprise-api Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/apprise-api:latest Versions 17.10.22: - Rebase to alpine 3.16, migrate to S6V3 28.02.21: - Rebase to alpine 3.15. 03.11.21: - Increase uWSGI buffer size to 32kb. 16.05.21: - Add linuxserver wheel index. 26.02.21: - Initial Release.","title":"apprise-api"},{"location":"images/docker-apprise-api/#linuxserverapprise-api","text":"Apprise-api Takes advantage of Apprise through your network with a user-friendly API. Send notifications to more then 65+ services. An incredibly lightweight gateway to Apprise. A production ready micro-service at your disposal. Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.","title":"linuxserver/apprise-api"},{"location":"images/docker-apprise-api/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-apprise-api/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-apprise-api/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : apprise-api : image : lscr.io/linuxserver/apprise-api:latest container_name : apprise-api environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-apprise-api/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = apprise-api \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/apprise-api:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-apprise-api/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-apprise-api/#ports-p","text":"Parameter Function 8000 Port for apprise's interface and API.","title":"Ports (-p)"},{"location":"images/docker-apprise-api/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-apprise-api/#volume-mappings-v","text":"Volume Function /config Where config is stored.","title":"Volume Mappings (-v)"},{"location":"images/docker-apprise-api/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-apprise-api/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-apprise-api/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-apprise-api/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-apprise-api/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-apprise-api/#support-info","text":"Shell access whilst the container is running: docker exec -it apprise-api /bin/bash To monitor the logs of the container in realtime: docker logs -f apprise-api Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' apprise-api Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/apprise-api:latest","title":"Support Info"},{"location":"images/docker-apprise-api/#versions","text":"17.10.22: - Rebase to alpine 3.16, migrate to S6V3 28.02.21: - Rebase to alpine 3.15. 03.11.21: - Increase uWSGI buffer size to 32kb. 16.05.21: - Add linuxserver wheel index. 26.02.21: - Initial Release.","title":"Versions"},{"location":"images/docker-audacity/","text":"linuxserver/audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : audacity : image : lscr.io/linuxserver/audacity:latest container_name : audacity environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = audacity \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/audacity:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Audacity desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings and images Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it audacity /bin/bash To monitor the logs of the container in realtime: docker logs -f audacity Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' audacity Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/audacity:latest Versions 13.12.22: - Rebase to Jammy. 14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates. 07.04.21: - Initial release.","title":"audacity"},{"location":"images/docker-audacity/#linuxserveraudacity","text":"Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.","title":"linuxserver/audacity"},{"location":"images/docker-audacity/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-audacity/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-audacity/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-audacity/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : audacity : image : lscr.io/linuxserver/audacity:latest container_name : audacity environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-audacity/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = audacity \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/audacity:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-audacity/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-audacity/#ports-p","text":"Parameter Function 3000 Audacity desktop gui.","title":"Ports (-p)"},{"location":"images/docker-audacity/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-audacity/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings and images","title":"Volume Mappings (-v)"},{"location":"images/docker-audacity/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-audacity/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-audacity/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-audacity/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-audacity/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-audacity/#support-info","text":"Shell access whilst the container is running: docker exec -it audacity /bin/bash To monitor the logs of the container in realtime: docker logs -f audacity Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' audacity Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/audacity:latest","title":"Support Info"},{"location":"images/docker-audacity/#versions","text":"13.12.22: - Rebase to Jammy. 14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates. 07.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-babybuddy/","text":"linuxserver/babybuddy Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at :8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin . By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : babybuddy : image : lscr.io/linuxserver/babybuddy:latest container_name : babybuddy environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com volumes : - /path/to/appdata:/config ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = babybuddy \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CSRF_TRUSTED_ORIGINS = http://127.0.0.1:8000,https://babybuddy.domain.com \\ -p 8000 :8000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/babybuddy:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 the port for the web ui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com Add any address you'd like to access babybuddy at (comma separated, no spaces) Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration and data. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it babybuddy /bin/bash To monitor the logs of the container in realtime: docker logs -f babybuddy Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' babybuddy Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/babybuddy:latest Versions 23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs ( see changes announcement ). 28.05.22: - Add missing PUID/PGID vars to readme. 03.04.22: - Rebase to alpine-nginx baseimage. Add CSRF_TRUSTED_ORIGINS env var. 11.12.21: - Add py3-mysqlclient for mysql/mariadb. 14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml). 25.07.21: - Add libpq for postgresql. 08.07.21: - Fix pip install issue. 05.07.21: - Update Gunicorn parameters to prevent WORKER_TIMEOUT issue. 22.06.21: - Initial release.","title":"babybuddy"},{"location":"images/docker-babybuddy/#linuxserverbabybuddy","text":"Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.","title":"linuxserver/babybuddy"},{"location":"images/docker-babybuddy/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-babybuddy/#application-setup","text":"Access the webui at :8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin . By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs .","title":"Application Setup"},{"location":"images/docker-babybuddy/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-babybuddy/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : babybuddy : image : lscr.io/linuxserver/babybuddy:latest container_name : babybuddy environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com volumes : - /path/to/appdata:/config ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-babybuddy/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = babybuddy \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CSRF_TRUSTED_ORIGINS = http://127.0.0.1:8000,https://babybuddy.domain.com \\ -p 8000 :8000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/babybuddy:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-babybuddy/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-babybuddy/#ports-p","text":"Parameter Function 8000 the port for the web ui","title":"Ports (-p)"},{"location":"images/docker-babybuddy/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com Add any address you'd like to access babybuddy at (comma separated, no spaces)","title":"Environment Variables (-e)"},{"location":"images/docker-babybuddy/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration and data.","title":"Volume Mappings (-v)"},{"location":"images/docker-babybuddy/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-babybuddy/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-babybuddy/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-babybuddy/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-babybuddy/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-babybuddy/#support-info","text":"Shell access whilst the container is running: docker exec -it babybuddy /bin/bash To monitor the logs of the container in realtime: docker logs -f babybuddy Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' babybuddy Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/babybuddy:latest","title":"Support Info"},{"location":"images/docker-babybuddy/#versions","text":"23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs ( see changes announcement ). 28.05.22: - Add missing PUID/PGID vars to readme. 03.04.22: - Rebase to alpine-nginx baseimage. Add CSRF_TRUSTED_ORIGINS env var. 11.12.21: - Add py3-mysqlclient for mysql/mariadb. 14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml). 25.07.21: - Add libpq for postgresql. 08.07.21: - Fix pip install issue. 05.07.21: - Update Gunicorn parameters to prevent WORKER_TIMEOUT issue. 22.06.21: - Initial release.","title":"Versions"},{"location":"images/docker-base-alpine-example/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Docker base alpine example"},{"location":"images/docker-base-alpine-example/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-base-ubuntu-example/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum A custom base image built with Ubuntu cloud image and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Docker base ubuntu example"},{"location":"images/docker-base-ubuntu-example/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum A custom base image built with Ubuntu cloud image and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-alpine-nginx/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux , nginx and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-alpine-nginx"},{"location":"images/docker-baseimage-alpine-nginx/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux , nginx and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-alpine-python/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux , python2 and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-alpine-python"},{"location":"images/docker-baseimage-alpine-python/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine","title":"DEPRECATION NOTICE"},{"location":"images/docker-baseimage-alpine-python/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux , python2 and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-alpine/","text":"Contact information:- Type Address/Details Discord Discord IRC libera at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-alpine"},{"location":"images/docker-baseimage-alpine/#contact-information-","text":"Type Address/Details Discord Discord IRC libera at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-arch/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-arch"},{"location":"images/docker-baseimage-arch/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-cloud9/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and Cloud9 .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-cloud9"},{"location":"images/docker-baseimage-cloud9/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-baseimage-cloud9/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and Cloud9 .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-fedora/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-fedora"},{"location":"images/docker-baseimage-fedora/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Alpine linux and S6 overlay .. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-guacgui/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Contact information: Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum linuxserver/docker-baseimage-guacgui A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container. docker docker create \\ --name=docker-baseimage-guacgui \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e APPNAME=xclock \\ -e GUAC_USER=abc `#optional` \\ -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 `#optional` \\ -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz `#optional` \\ -p 8080:8080 \\ -p 3389:3389 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/docker-baseimage-guacgui docker-compose Compatible with docker-compose v2 schemas. --- version: \"2\" services: docker-baseimage-guacgui: image: linuxserver/docker-baseimage-guacgui container_name: docker-baseimage-guacgui environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - APPNAME=xclock - GUAC_USER=abc #optional - GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 #optional - GUAC_KEYBOARD_LAYOUT=de-de-qwertz #optional volumes: - :/config ports: - 8080:8080 - 3389:3389 restart: unless-stopped Parameters Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 8080 Allows HTTP access to the internal X server. -p 3389 Allows RDP access to the internal X server. -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e APPNAME=xclock Specify the graphical application name shown on RDP access. -e GUAC_USER=abc Specify the username for guacamole's web interface. -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 Specify the password's md5 hash for guacamole's web interface. -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz Specify the used keyboard layout for the RDP session used by the gucamole client. Possible values are \"en-us-qwerty\" (default), de-de-qwertz (German keyboard (qwertz)), fr-fr-azerty (French keyboard (azerty)), fr-ch-qwertz (Swiss French keyboard (qwertz)), it-it-qwerty (Italian keyboard), ja-jp-qwerty (Japanese keyboard) and sv-se-qwerty (Swedish keyboard). -v /config Contains X user's home directory contents. Application Setup This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage. If GUAC_USER and GUAC_PASS are not set, there is no authentication. Passwords can be generated via the following: echo -n password | openssl md5 printf '%s' password | md5sum Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security. The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-guacgui"},{"location":"images/docker-baseimage-guacgui/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-baseimage-guacgui/#contact-information","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum","title":"Contact information:"},{"location":"images/docker-baseimage-guacgui/#linuxserverdocker-baseimage-guacgui","text":"A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole","title":"linuxserver/docker-baseimage-guacgui"},{"location":"images/docker-baseimage-guacgui/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-baseimage-guacgui/#usage","text":"Here are some example snippets to help you get started creating a container.","title":"Usage"},{"location":"images/docker-baseimage-guacgui/#docker","text":"docker create \\ --name=docker-baseimage-guacgui \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e APPNAME=xclock \\ -e GUAC_USER=abc `#optional` \\ -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 `#optional` \\ -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz `#optional` \\ -p 8080:8080 \\ -p 3389:3389 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/docker-baseimage-guacgui","title":"docker"},{"location":"images/docker-baseimage-guacgui/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version: \"2\" services: docker-baseimage-guacgui: image: linuxserver/docker-baseimage-guacgui container_name: docker-baseimage-guacgui environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - APPNAME=xclock - GUAC_USER=abc #optional - GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 #optional - GUAC_KEYBOARD_LAYOUT=de-de-qwertz #optional volumes: - :/config ports: - 8080:8080 - 3389:3389 restart: unless-stopped","title":"docker-compose"},{"location":"images/docker-baseimage-guacgui/#parameters","text":"Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 8080 Allows HTTP access to the internal X server. -p 3389 Allows RDP access to the internal X server. -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e APPNAME=xclock Specify the graphical application name shown on RDP access. -e GUAC_USER=abc Specify the username for guacamole's web interface. -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 Specify the password's md5 hash for guacamole's web interface. -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz Specify the used keyboard layout for the RDP session used by the gucamole client. Possible values are \"en-us-qwerty\" (default), de-de-qwertz (German keyboard (qwertz)), fr-fr-azerty (French keyboard (azerty)), fr-ch-qwertz (Swiss French keyboard (qwertz)), it-it-qwerty (Italian keyboard), ja-jp-qwerty (Japanese keyboard) and sv-se-qwerty (Swedish keyboard). -v /config Contains X user's home directory contents.","title":"Parameters"},{"location":"images/docker-baseimage-guacgui/#application-setup","text":"This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage. If GUAC_USER and GUAC_PASS are not set, there is no authentication. Passwords can be generated via the following: echo -n password | openssl md5 printf '%s' password | md5sum Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security. The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Application Setup"},{"location":"images/docker-baseimage-gui/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Contact information: Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum linuxserver/docker-baseimage-gui A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here is an example to help you get started creating a graphical container. Dockerfile #Firefox via RDP FROM lsiobase/ubuntu-gui:amd64-latest ######################################### ## ENVIRONMENTAL CONFIG ## ######################################### # Set correct environment variables ENV TERM=\"xterm\" APPNAME=\"firefox\" ARG DEBIAN_FRONTEND=noninteractive ######################################### ## INSTALL DEPENDENCIES ## ######################################### RUN apt-get update \\ && apt-get -y upgrade \\ && apt-get install -qy --no-install-recommends \\ firefox \\ && apt-get clean -y \\ && apt-get autoremove -y \\ && rm -rf /tmp/* /var/tmp/* \\ && rm -rf /var/lib/apt/lists/* COPY root / servicefile #!/bin/execlineb -P # ./root/etc/service.d/firefox/run # Redirect stderr to stdout. fdmove -c 2 1 # Wait until openbox is running if { s6-svwait -t 10000 -U /var/run/s6/services/openbox/ } # Drop privileges and set env s6-setuidgid abc s6-env DISPLAY=:1 HOME=/config # Execute Firefox /usr/bin/firefox Access the Graphical Interface Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-gui"},{"location":"images/docker-baseimage-gui/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-baseimage-gui/#contact-information","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum","title":"Contact information:"},{"location":"images/docker-baseimage-gui/#linuxserverdocker-baseimage-gui","text":"A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox","title":"linuxserver/docker-baseimage-gui"},{"location":"images/docker-baseimage-gui/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-baseimage-gui/#usage","text":"Here is an example to help you get started creating a graphical container.","title":"Usage"},{"location":"images/docker-baseimage-gui/#dockerfile","text":"#Firefox via RDP FROM lsiobase/ubuntu-gui:amd64-latest ######################################### ## ENVIRONMENTAL CONFIG ## ######################################### # Set correct environment variables ENV TERM=\"xterm\" APPNAME=\"firefox\" ARG DEBIAN_FRONTEND=noninteractive ######################################### ## INSTALL DEPENDENCIES ## ######################################### RUN apt-get update \\ && apt-get -y upgrade \\ && apt-get install -qy --no-install-recommends \\ firefox \\ && apt-get clean -y \\ && apt-get autoremove -y \\ && rm -rf /tmp/* /var/tmp/* \\ && rm -rf /var/lib/apt/lists/* COPY root /","title":"Dockerfile"},{"location":"images/docker-baseimage-gui/#servicefile","text":"#!/bin/execlineb -P # ./root/etc/service.d/firefox/run # Redirect stderr to stdout. fdmove -c 2 1 # Wait until openbox is running if { s6-svwait -t 10000 -U /var/run/s6/services/openbox/ } # Drop privileges and set env s6-setuidgid abc s6-env DISPLAY=:1 HOME=/config # Execute Firefox /usr/bin/firefox","title":"servicefile"},{"location":"images/docker-baseimage-gui/#access-the-graphical-interface","text":"Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Access the Graphical Interface"},{"location":"images/docker-baseimage-mono/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu cloud image , mono and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-mono"},{"location":"images/docker-baseimage-mono/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu cloud image , mono and S6 overlay .. Featuring :- weekly updates security updates The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-rdesktop-web/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and xrdp The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-rdesktop-web"},{"location":"images/docker-baseimage-rdesktop-web/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and xrdp The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-baseimage-rdesktop/","text":"Contact information:- Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and xrdp The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"baseimage-rdesktop"},{"location":"images/docker-baseimage-rdesktop/#contact-information-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum A custom base image built with Ubuntu linux and xrdp The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Contact information:-"},{"location":"images/docker-bazarr/","text":"linuxserver/bazarr Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from Bazarr development \u2705 Pre-releases from Bazarr Application Setup Once running the URL will be http://:6767 . You must complete all the setup parameters in the webui before you can save the config. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : bazarr : image : lscr.io/linuxserver/bazarr:latest container_name : bazarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/bazarr/config:/config - /path/to/movies:/movies #optional - /path/to/tv:/tv #optional ports : - 6767:6767 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = bazarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6767 :6767 \\ -v /path/to/bazarr/config:/config \\ -v /path/to/movies:/movies ` #optional` \\ -v /path/to/tv:/tv ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/bazarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 6767 Allows HTTP access to the internal webserver. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Bazarr data /movies Location of your movies /tv Location of your TV Shows Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it bazarr /bin/bash To monitor the logs of the container in realtime: docker logs -f bazarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bazarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bazarr:latest Versions 11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel. 25.10.21: - Rebase to alpine 3.14. Fix numpy wheel. 22.10.21: - Added openblas package to prevent numpy error. 16.05.21: - Use wheel index. 19.04.21: - Install from release zip. 07.04.21: - Move app to /app/bazarr/bin, add package_info . 23.01.21: - Rebasing to alpine 3.13. 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 01.06.20: - Rebasing to alpine 3.12. 13.05.20: - Add donation links for Bazarr to Github sponsors button and container log. 08.04.20: - Removed /movies and /tv volumes from Dockerfiles. 28.12.19: - Upgrade to Python 3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 13.06.19: - Add env variable for setting umask. 12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe. 17.04.19: - Add default UTC timezone if user does not set it. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.09.18: - Initial release.","title":"bazarr"},{"location":"images/docker-bazarr/#linuxserverbazarr","text":"Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.","title":"linuxserver/bazarr"},{"location":"images/docker-bazarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-bazarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from Bazarr development \u2705 Pre-releases from Bazarr","title":"Version Tags"},{"location":"images/docker-bazarr/#application-setup","text":"Once running the URL will be http://:6767 . You must complete all the setup parameters in the webui before you can save the config.","title":"Application Setup"},{"location":"images/docker-bazarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-bazarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : bazarr : image : lscr.io/linuxserver/bazarr:latest container_name : bazarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/bazarr/config:/config - /path/to/movies:/movies #optional - /path/to/tv:/tv #optional ports : - 6767:6767 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-bazarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = bazarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6767 :6767 \\ -v /path/to/bazarr/config:/config \\ -v /path/to/movies:/movies ` #optional` \\ -v /path/to/tv:/tv ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/bazarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-bazarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-bazarr/#ports-p","text":"Parameter Function 6767 Allows HTTP access to the internal webserver.","title":"Ports (-p)"},{"location":"images/docker-bazarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-bazarr/#volume-mappings-v","text":"Volume Function /config Bazarr data /movies Location of your movies /tv Location of your TV Shows","title":"Volume Mappings (-v)"},{"location":"images/docker-bazarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-bazarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-bazarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-bazarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-bazarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-bazarr/#support-info","text":"Shell access whilst the container is running: docker exec -it bazarr /bin/bash To monitor the logs of the container in realtime: docker logs -f bazarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bazarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bazarr:latest","title":"Support Info"},{"location":"images/docker-bazarr/#versions","text":"11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel. 25.10.21: - Rebase to alpine 3.14. Fix numpy wheel. 22.10.21: - Added openblas package to prevent numpy error. 16.05.21: - Use wheel index. 19.04.21: - Install from release zip. 07.04.21: - Move app to /app/bazarr/bin, add package_info . 23.01.21: - Rebasing to alpine 3.13. 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 01.06.20: - Rebasing to alpine 3.12. 13.05.20: - Add donation links for Bazarr to Github sponsors button and container log. 08.04.20: - Removed /movies and /tv volumes from Dockerfiles. 28.12.19: - Upgrade to Python 3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 13.06.19: - Add env variable for setting umask. 12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe. 17.04.19: - Add default UTC timezone if user does not set it. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.09.18: - Initial release.","title":"Versions"},{"location":"images/docker-beets/","text":"linuxserver/beets Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Beets Releases nightly \u2705 Built against head of Beets git, generally considered unstable but a likely choice for power users of the application. Application Setup Edit the config file in /config To edit the config from within the container use beet config -e For a command prompt as user abc docker exec -it -u abc beets bash See Beets for more info. Contains beets-extrafiles plugin, configuration details Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : beets : image : lscr.io/linuxserver/beets:latest container_name : beets environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/music - :/downloads ports : - 8337:8337 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = beets \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8337 :8337 \\ -v :/config \\ -v :/music \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/beets:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8337 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. /music Music library /downloads Non processed music Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it beets /bin/bash To monitor the logs of the container in realtime: docker logs -f beets Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' beets Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/beets:latest Versions 15.01.22: - Rebasing to alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.05.19: - Add flac and mp3val binaries required for badfiles plugin. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag. 01.03.19: - Switch to python3. 07.02.19: - Add fftw-dev build dependency for chromaprint. 28.01.19: - Add pipeline logic and multi arch. 15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast. 12.08.18: - Add requests pip package. 04.03.18: - Upgrade mp3gain to 1.6.1. 02.01.18: - Deprecate cpu_core routine lack of scaling. 27.12.17: - Add beautifulsoup4 pip package. 06.12.17: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 16.01.17: - Add packages required for replaygain. 24.12.16: - Add beets-copyartifacts plugin. 07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib 14.10.16: - Add version layer information. 01.10.16: - Add nano and editor variable to allow editing of the config from the container command line. 30.09.16: - Fix umask. 24.09.16: - Rebase to alpine linux. 10.09.16: - Add layer badges to README. 05.01.16: - Change ffpmeg repository, other version crashes container 06.11.15: - Initial Release 29.11.15: - Take out term setting, causing issues with key entry for some users","title":"beets"},{"location":"images/docker-beets/#linuxserverbeets","text":"Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.","title":"linuxserver/beets"},{"location":"images/docker-beets/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-beets/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Beets Releases nightly \u2705 Built against head of Beets git, generally considered unstable but a likely choice for power users of the application.","title":"Version Tags"},{"location":"images/docker-beets/#application-setup","text":"Edit the config file in /config To edit the config from within the container use beet config -e For a command prompt as user abc docker exec -it -u abc beets bash See Beets for more info. Contains beets-extrafiles plugin, configuration details","title":"Application Setup"},{"location":"images/docker-beets/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-beets/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : beets : image : lscr.io/linuxserver/beets:latest container_name : beets environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/music - :/downloads ports : - 8337:8337 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-beets/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = beets \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8337 :8337 \\ -v :/config \\ -v :/music \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/beets:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-beets/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-beets/#ports-p","text":"Parameter Function 8337 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-beets/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-beets/#volume-mappings-v","text":"Volume Function /config Configuration files. /music Music library /downloads Non processed music","title":"Volume Mappings (-v)"},{"location":"images/docker-beets/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-beets/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-beets/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-beets/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-beets/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-beets/#support-info","text":"Shell access whilst the container is running: docker exec -it beets /bin/bash To monitor the logs of the container in realtime: docker logs -f beets Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' beets Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/beets:latest","title":"Support Info"},{"location":"images/docker-beets/#versions","text":"15.01.22: - Rebasing to alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.05.19: - Add flac and mp3val binaries required for badfiles plugin. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag. 01.03.19: - Switch to python3. 07.02.19: - Add fftw-dev build dependency for chromaprint. 28.01.19: - Add pipeline logic and multi arch. 15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast. 12.08.18: - Add requests pip package. 04.03.18: - Upgrade mp3gain to 1.6.1. 02.01.18: - Deprecate cpu_core routine lack of scaling. 27.12.17: - Add beautifulsoup4 pip package. 06.12.17: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 16.01.17: - Add packages required for replaygain. 24.12.16: - Add beets-copyartifacts plugin. 07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib 14.10.16: - Add version layer information. 01.10.16: - Add nano and editor variable to allow editing of the config from the container command line. 30.09.16: - Fix umask. 24.09.16: - Rebase to alpine linux. 10.09.16: - Add layer badges to README. 05.01.16: - Change ffpmeg repository, other version crashes container 06.11.15: - Initial Release 29.11.15: - Take out term setting, causing issues with key entry for some users","title":"Versions"},{"location":"images/docker-blender/","text":"linuxserver/blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: * http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false . Hardware Acceleration This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container. Intel/ATI/AMD To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container. Arm Devices Arm devices can run this image, but generally should not mount in /dev/dri. The OpenGL ES version is not high enough to run Blender. The program can run on these platforms though, leveraging CPU LLVMPipe rendering. Due to lack of arm32/64 binaries from the upstream project, our arm32/64 images install the latest version from the ubuntu repo, which is usually behind and thus the version the image is tagged with does not match the version contained. Keyboard Layouts This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : blender : image : lscr.io/linuxserver/blender:latest container_name : blender security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = blender \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/blender:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Blender desktop gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores local files and settings Device Mappings ( --device ) Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only) Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it blender /bin/bash To monitor the logs of the container in realtime: docker logs -f blender Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' blender Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/blender:latest Versions 13.12.22: - Rebase to Jammy, migrate to s6v3. 06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind. 12.03.22: - Initial Release.","title":"blender"},{"location":"images/docker-blender/#linuxserverblender","text":"Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience","title":"linuxserver/blender"},{"location":"images/docker-blender/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-blender/#application-setup","text":"The application can be accessed at: * http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false .","title":"Application Setup"},{"location":"images/docker-blender/#hardware-acceleration","text":"This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container.","title":"Hardware Acceleration"},{"location":"images/docker-blender/#intelatiamd","text":"To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel/ATI/AMD"},{"location":"images/docker-blender/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.","title":"Nvidia"},{"location":"images/docker-blender/#arm-devices","text":"Arm devices can run this image, but generally should not mount in /dev/dri. The OpenGL ES version is not high enough to run Blender. The program can run on these platforms though, leveraging CPU LLVMPipe rendering. Due to lack of arm32/64 binaries from the upstream project, our arm32/64 images install the latest version from the ubuntu repo, which is usually behind and thus the version the image is tagged with does not match the version contained.","title":"Arm Devices"},{"location":"images/docker-blender/#keyboard-layouts","text":"This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard","title":"Keyboard Layouts"},{"location":"images/docker-blender/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-blender/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : blender : image : lscr.io/linuxserver/blender:latest container_name : blender security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-blender/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = blender \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/blender:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-blender/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-blender/#ports-p","text":"Parameter Function 3000 Blender desktop gui","title":"Ports (-p)"},{"location":"images/docker-blender/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.","title":"Environment Variables (-e)"},{"location":"images/docker-blender/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores local files and settings","title":"Volume Mappings (-v)"},{"location":"images/docker-blender/#device-mappings-device","text":"Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only)","title":"Device Mappings (--device)"},{"location":"images/docker-blender/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration.","title":"Miscellaneous Options"},{"location":"images/docker-blender/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-blender/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-blender/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-blender/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-blender/#support-info","text":"Shell access whilst the container is running: docker exec -it blender /bin/bash To monitor the logs of the container in realtime: docker logs -f blender Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' blender Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/blender:latest","title":"Support Info"},{"location":"images/docker-blender/#versions","text":"13.12.22: - Rebase to Jammy, migrate to s6v3. 06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind. 12.03.22: - Initial Release.","title":"Versions"},{"location":"images/docker-boinc/","text":"linuxserver/boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080 . By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc . You can access advanced features of the Guacamole remote desktop using ctrl + alt + shift enabling you to use remote copy/paste and different languages. It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View . Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them. GPU Hardware Acceleration Intel Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : boinc : image : lscr.io/linuxserver/boinc:latest container_name : boinc security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD= #optional volumes : - /path/to/data:/config ports : - 8080:8080 devices : - /dev/dri:/dev/dri #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = boinc \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = ` #optional` \\ -p 8080 :8080 \\ -v /path/to/data:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/boinc:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Boinc desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui. Volume Mappings ( -v ) Volume Function /config Where BOINC should store its database and config. Device Mappings ( --device ) Parameter Function /dev/dri Only needed if you want to use your Intel GPU (vaapi). Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it boinc /bin/bash To monitor the logs of the container in realtime: docker logs -f boinc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' boinc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/boinc:latest Versions 14.11.22: - Fix opencl driver. 18.09.22: - Rebase to jammy. 24.02.22: - Rebase to focal. 31.01.22: - Improve device permissions setting verbosity. 23.03.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc . 01.04.20: - Install boinc from ppa. 17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image. 16.03.20: - Clean up old pid files. 15.03.20: - Initial release.","title":"boinc"},{"location":"images/docker-boinc/#linuxserverboinc","text":"BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.","title":"linuxserver/boinc"},{"location":"images/docker-boinc/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-boinc/#application-setup","text":"This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080 . By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc . You can access advanced features of the Guacamole remote desktop using ctrl + alt + shift enabling you to use remote copy/paste and different languages. It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View . Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them.","title":"Application Setup"},{"location":"images/docker-boinc/#gpu-hardware-acceleration","text":"","title":"GPU Hardware Acceleration"},{"location":"images/docker-boinc/#intel","text":"Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel"},{"location":"images/docker-boinc/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.","title":"Nvidia"},{"location":"images/docker-boinc/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-boinc/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : boinc : image : lscr.io/linuxserver/boinc:latest container_name : boinc security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD= #optional volumes : - /path/to/data:/config ports : - 8080:8080 devices : - /dev/dri:/dev/dri #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-boinc/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = boinc \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = ` #optional` \\ -p 8080 :8080 \\ -v /path/to/data:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/boinc:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-boinc/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-boinc/#ports-p","text":"Parameter Function 8080 Boinc desktop gui.","title":"Ports (-p)"},{"location":"images/docker-boinc/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui.","title":"Environment Variables (-e)"},{"location":"images/docker-boinc/#volume-mappings-v","text":"Volume Function /config Where BOINC should store its database and config.","title":"Volume Mappings (-v)"},{"location":"images/docker-boinc/#device-mappings-device","text":"Parameter Function /dev/dri Only needed if you want to use your Intel GPU (vaapi).","title":"Device Mappings (--device)"},{"location":"images/docker-boinc/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-boinc/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-boinc/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-boinc/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-boinc/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-boinc/#support-info","text":"Shell access whilst the container is running: docker exec -it boinc /bin/bash To monitor the logs of the container in realtime: docker logs -f boinc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' boinc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/boinc:latest","title":"Support Info"},{"location":"images/docker-boinc/#versions","text":"14.11.22: - Fix opencl driver. 18.09.22: - Rebase to jammy. 24.02.22: - Rebase to focal. 31.01.22: - Improve device permissions setting verbosity. 23.03.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc . 01.04.20: - Install boinc from ppa. 17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image. 16.03.20: - Clean up old pid files. 15.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-booksonic-air/","text":"linuxserver/booksonic-air Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable booksonic-air releases Application Setup Whilst this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : booksonic-air : image : lscr.io/linuxserver/booksonic-air:latest container_name : booksonic-air environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH=url-base volumes : - :/config - :/audiobooks - :/podcasts - :/othermedia ports : - 4040:4040 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = booksonic-air \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = url-base \\ -p 4040 :4040 \\ -v :/config \\ -v :/audiobooks \\ -v :/podcasts \\ -v :/othermedia \\ --restart unless-stopped \\ lscr.io/linuxserver/booksonic-air:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4040 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc. Volume Mappings ( -v ) Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it booksonic-air /bin/bash To monitor the logs of the container in realtime: docker logs -f booksonic-air Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic-air Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic-air:latest Versions 18.04.22: - Rebase to Alpine 3.15. 15.09.20: - Initial Release.","title":"booksonic-air"},{"location":"images/docker-booksonic-air/#linuxserverbooksonic-air","text":"Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.","title":"linuxserver/booksonic-air"},{"location":"images/docker-booksonic-air/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-booksonic-air/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable booksonic-air releases","title":"Version Tags"},{"location":"images/docker-booksonic-air/#application-setup","text":"Whilst this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin","title":"Application Setup"},{"location":"images/docker-booksonic-air/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-booksonic-air/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : booksonic-air : image : lscr.io/linuxserver/booksonic-air:latest container_name : booksonic-air environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH=url-base volumes : - :/config - :/audiobooks - :/podcasts - :/othermedia ports : - 4040:4040 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-booksonic-air/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = booksonic-air \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = url-base \\ -p 4040 :4040 \\ -v :/config \\ -v :/audiobooks \\ -v :/podcasts \\ -v :/othermedia \\ --restart unless-stopped \\ lscr.io/linuxserver/booksonic-air:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-booksonic-air/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-booksonic-air/#ports-p","text":"Parameter Function 4040 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-booksonic-air/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc.","title":"Environment Variables (-e)"},{"location":"images/docker-booksonic-air/#volume-mappings-v","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media.","title":"Volume Mappings (-v)"},{"location":"images/docker-booksonic-air/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-booksonic-air/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-booksonic-air/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-booksonic-air/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-booksonic-air/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-booksonic-air/#support-info","text":"Shell access whilst the container is running: docker exec -it booksonic-air /bin/bash To monitor the logs of the container in realtime: docker logs -f booksonic-air Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic-air Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic-air:latest","title":"Support Info"},{"location":"images/docker-booksonic-air/#versions","text":"18.04.22: - Rebase to Alpine 3.15. 15.09.20: - Initial Release.","title":"Versions"},{"location":"images/docker-booksonic/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air linuxserver/booksonic Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Version Tags This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable Booksonic releases prerelease Booksonic Pre-releases Application Setup Default user/pass is admin/admin Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : booksonic : image : lscr.io/linuxserver/booksonic container_name : booksonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH=url-base volumes : - :/config - :/audiobooks - :/podcasts - :/othermedia ports : - 4040:4040 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = booksonic \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = url-base \\ -p 4040 :4040 \\ -v :/config \\ -v :/audiobooks \\ -v :/podcasts \\ -v :/othermedia \\ --restart unless-stopped \\ lscr.io/linuxserver/booksonic Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4040 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc. Volume Mappings ( -v ) Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it booksonic /bin/bash To monitor the logs of the container in realtime: docker logs -f booksonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic Versions 06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air 11.08.20: - Changed upstream github repo location 22.12.19: - Revert to pulling in external war, upgrade jetty. 30.04.19: - Switching to build war from source, use stable booksonic releases. 24.03.19: - Switching to new Base images, shift to arm32v7 tag. 16.01.19: - Adding pipeline logic and multi arch. 05.01.19: - Linting fixes. 27.08.18: - Rebase to ubuntu bionic. 06.12.17: - Rebase to alpine 3.7. 11.07.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 13.12.16: - Initial Release.","title":"booksonic"},{"location":"images/docker-booksonic/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air","title":"DEPRECATION NOTICE"},{"location":"images/docker-booksonic/#linuxserverbooksonic","text":"Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.","title":"linuxserver/booksonic"},{"location":"images/docker-booksonic/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-booksonic/#version-tags","text":"This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable Booksonic releases prerelease Booksonic Pre-releases","title":"Version Tags"},{"location":"images/docker-booksonic/#application-setup","text":"Default user/pass is admin/admin","title":"Application Setup"},{"location":"images/docker-booksonic/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-booksonic/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : booksonic : image : lscr.io/linuxserver/booksonic container_name : booksonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH=url-base volumes : - :/config - :/audiobooks - :/podcasts - :/othermedia ports : - 4040:4040 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-booksonic/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = booksonic \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONTEXT_PATH = url-base \\ -p 4040 :4040 \\ -v :/config \\ -v :/audiobooks \\ -v :/podcasts \\ -v :/othermedia \\ --restart unless-stopped \\ lscr.io/linuxserver/booksonic","title":"docker cli (click here for more info)"},{"location":"images/docker-booksonic/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-booksonic/#ports-p","text":"Parameter Function 4040 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-booksonic/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc.","title":"Environment Variables (-e)"},{"location":"images/docker-booksonic/#volume-mappings-v","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media.","title":"Volume Mappings (-v)"},{"location":"images/docker-booksonic/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-booksonic/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-booksonic/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-booksonic/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-booksonic/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-booksonic/#support-info","text":"Shell access whilst the container is running: docker exec -it booksonic /bin/bash To monitor the logs of the container in realtime: docker logs -f booksonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic","title":"Support Info"},{"location":"images/docker-booksonic/#versions","text":"06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air 11.08.20: - Changed upstream github repo location 22.12.19: - Revert to pulling in external war, upgrade jetty. 30.04.19: - Switching to build war from source, use stable booksonic releases. 24.03.19: - Switching to new Base images, shift to arm32v7 tag. 16.01.19: - Adding pipeline logic and multi arch. 05.01.19: - Linting fixes. 27.08.18: - Rebase to ubuntu bionic. 06.12.17: - Rebase to alpine 3.7. 11.07.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 13.12.16: - Initial Release.","title":"Versions"},{"location":"images/docker-bookstack/","text":"linuxserver/bookstack Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore. For more information on BookStack visit their website and check it out: https://www.bookstackapp.com Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The default username is admin@admin.com with the password of password , access the container at http://dockerhost:6875. This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/. If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the APP_URL environment variable is set to your external domain, or it will not work Documentation for BookStack can be found at https://www.bookstackapp.com/docs/ Advanced Users (full control over the .env file) If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation. When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit. PDF Rendering wkhtmltopdf is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/. The path to wkhtmltopdf in this image to include in your .env file is /usr/bin/wkhtmltopdf . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2\" services : bookstack : image : lscr.io/linuxserver/bookstack container_name : bookstack environment : - PUID=1000 - PGID=1000 - APP_URL= - DB_HOST=bookstack_db - DB_PORT=3306 - DB_USER=bookstack - DB_PASS= - DB_DATABASE=bookstackapp volumes : - /path/to/data:/config ports : - 6875:80 restart : unless-stopped depends_on : - bookstack_db bookstack_db : image : lscr.io/linuxserver/mariadb container_name : bookstack_db environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD= - TZ=Europe/London - MYSQL_DATABASE=bookstackapp - MYSQL_USER=bookstack - MYSQL_PASSWORD= volumes : - /path/to/data:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = bookstack \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e APP_URL = \\ -e DB_HOST = \\ -e DB_PORT = \\ -e DB_USER = \\ -e DB_PASS = \\ -e DB_DATABASE = bookstackapp \\ -p 6875 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/bookstack:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 will map the container's port 80 to port 6875 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London APP_URL= for specifying the IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com DB_HOST= for specifying the database host DB_PORT= for specifying the database port if not default 3306 DB_USER= for specifying the database user DB_PASS= for specifying the database password (non-alphanumeric passwords must be properly escaped.) DB_DATABASE=bookstackapp for specifying the database to be used Volume Mappings ( -v ) Volume Function /config this will store any uploaded data on the docker host Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it bookstack /bin/bash To monitor the logs of the container in realtime: docker logs -f bookstack Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bookstack Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bookstack:latest Versions 05.01.23: - Fix db password setting (sed escape & ). 21.12.22: - Update db info in .env file when env vars are updated. 10.10.22: - Remove password escape logic which caused problems for a small subset of users. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 14.03.22: - Add symlinks for theme support. 11.07.21: - Rebase to Alpine 3.14. 12.01.21: - Remove unused requirement, as of release 0.31.0. 17.12.20: - Make APP_URL var required (upstream changes). 17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default. 19.12.19: - Rebasing to alpine 3.11. 26.07.19: - Use old version of tidyhtml pending upstream fixes. 28.06.19: - Rebasing to alpine 3.10. 14.06.19: - Add wkhtmltopdf to image for PDF rendering. 20.04.19: - Rebase to Alpine 3.9, add MySQL init logic. 22.03.19: - Switching to new Base images, shift to arm32v7 tag. 20.01.19: - Added php7-curl 04.11.18: - Added php7-ldap 15.10.18: - Changed functionality for advanced users 08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files 23.09.28: - Updates pre-release 02.07.18: - Initial Release.","title":"bookstack"},{"location":"images/docker-bookstack/#linuxserverbookstack","text":"Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore. For more information on BookStack visit their website and check it out: https://www.bookstackapp.com","title":"linuxserver/bookstack"},{"location":"images/docker-bookstack/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-bookstack/#application-setup","text":"The default username is admin@admin.com with the password of password , access the container at http://dockerhost:6875. This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/. If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the APP_URL environment variable is set to your external domain, or it will not work Documentation for BookStack can be found at https://www.bookstackapp.com/docs/","title":"Application Setup"},{"location":"images/docker-bookstack/#advanced-users-full-control-over-the-env-file","text":"If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation. When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.","title":"Advanced Users (full control over the .env file)"},{"location":"images/docker-bookstack/#pdf-rendering","text":"wkhtmltopdf is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/. The path to wkhtmltopdf in this image to include in your .env file is /usr/bin/wkhtmltopdf .","title":"PDF Rendering"},{"location":"images/docker-bookstack/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-bookstack/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2\" services : bookstack : image : lscr.io/linuxserver/bookstack container_name : bookstack environment : - PUID=1000 - PGID=1000 - APP_URL= - DB_HOST=bookstack_db - DB_PORT=3306 - DB_USER=bookstack - DB_PASS= - DB_DATABASE=bookstackapp volumes : - /path/to/data:/config ports : - 6875:80 restart : unless-stopped depends_on : - bookstack_db bookstack_db : image : lscr.io/linuxserver/mariadb container_name : bookstack_db environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD= - TZ=Europe/London - MYSQL_DATABASE=bookstackapp - MYSQL_USER=bookstack - MYSQL_PASSWORD= volumes : - /path/to/data:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-bookstack/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = bookstack \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e APP_URL = \\ -e DB_HOST = \\ -e DB_PORT = \\ -e DB_USER = \\ -e DB_PASS = \\ -e DB_DATABASE = bookstackapp \\ -p 6875 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/bookstack:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-bookstack/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-bookstack/#ports-p","text":"Parameter Function 80 will map the container's port 80 to port 6875 on the host","title":"Ports (-p)"},{"location":"images/docker-bookstack/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London APP_URL= for specifying the IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com DB_HOST= for specifying the database host DB_PORT= for specifying the database port if not default 3306 DB_USER= for specifying the database user DB_PASS= for specifying the database password (non-alphanumeric passwords must be properly escaped.) DB_DATABASE=bookstackapp for specifying the database to be used","title":"Environment Variables (-e)"},{"location":"images/docker-bookstack/#volume-mappings-v","text":"Volume Function /config this will store any uploaded data on the docker host","title":"Volume Mappings (-v)"},{"location":"images/docker-bookstack/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-bookstack/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-bookstack/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-bookstack/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-bookstack/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-bookstack/#support-info","text":"Shell access whilst the container is running: docker exec -it bookstack /bin/bash To monitor the logs of the container in realtime: docker logs -f bookstack Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bookstack Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bookstack:latest","title":"Support Info"},{"location":"images/docker-bookstack/#versions","text":"05.01.23: - Fix db password setting (sed escape & ). 21.12.22: - Update db info in .env file when env vars are updated. 10.10.22: - Remove password escape logic which caused problems for a small subset of users. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 14.03.22: - Add symlinks for theme support. 11.07.21: - Rebase to Alpine 3.14. 12.01.21: - Remove unused requirement, as of release 0.31.0. 17.12.20: - Make APP_URL var required (upstream changes). 17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default. 19.12.19: - Rebasing to alpine 3.11. 26.07.19: - Use old version of tidyhtml pending upstream fixes. 28.06.19: - Rebasing to alpine 3.10. 14.06.19: - Add wkhtmltopdf to image for PDF rendering. 20.04.19: - Rebase to Alpine 3.9, add MySQL init logic. 22.03.19: - Switching to new Base images, shift to arm32v7 tag. 20.01.19: - Added php7-curl 04.11.18: - Added php7-ldap 15.10.18: - Changed functionality for advanced users 08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files 23.09.28: - Updates pre-release 02.07.18: - Initial Release.","title":"Versions"},{"location":"images/docker-budge/","text":"linuxserver/budge budge is an open source 'budgeting with envelopes' personal finance app. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the web gui at http://SERVERIP:PORT Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : budge : image : lscr.io/linuxserver/budge:latest container_name : budge environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/budge/config:/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = budge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/budge/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/budge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui 443 https gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York Volume Mappings ( -v ) Volume Function /config Persistent config files Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it budge /bin/bash To monitor the logs of the container in realtime: docker logs -f budge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' budge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/budge:latest Versions 29.11.22: - Rebase to Alpine 3.17, migrate to s6v3. 04.15.22: - Added NPM command to run db migrations. 02.05.22: - Initial Release.","title":"budge"},{"location":"images/docker-budge/#linuxserverbudge","text":"budge is an open source 'budgeting with envelopes' personal finance app.","title":"linuxserver/budge"},{"location":"images/docker-budge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-budge/#application-setup","text":"Access the web gui at http://SERVERIP:PORT","title":"Application Setup"},{"location":"images/docker-budge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-budge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : budge : image : lscr.io/linuxserver/budge:latest container_name : budge environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/budge/config:/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-budge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = budge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/budge/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/budge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-budge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-budge/#ports-p","text":"Parameter Function 80 http gui 443 https gui","title":"Ports (-p)"},{"location":"images/docker-budge/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York","title":"Environment Variables (-e)"},{"location":"images/docker-budge/#volume-mappings-v","text":"Volume Function /config Persistent config files","title":"Volume Mappings (-v)"},{"location":"images/docker-budge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-budge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-budge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-budge/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-budge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-budge/#support-info","text":"Shell access whilst the container is running: docker exec -it budge /bin/bash To monitor the logs of the container in realtime: docker logs -f budge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' budge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/budge:latest","title":"Support Info"},{"location":"images/docker-budge/#versions","text":"29.11.22: - Rebase to Alpine 3.17, migrate to s6v3. 04.15.22: - Added NPM command to run db migrations. 02.05.22: - Initial Release.","title":"Versions"},{"location":"images/docker-calibre-web/","text":"linuxserver/calibre-web Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. This software is a fork of library and licensed under the GPL v3 License. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Releases of Calibre-Web nightly \u2705 Commits to the master branch of Calibre-Web Application Setup Webui can be found at http://your-ip:8083 On the initial setup screen, enter /books as your calibre library location. Default admin login: Username: admin Password: admin123 Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar 64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to /usr/bin/ebook-convert This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to /usr/bin/kepubify Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : calibre-web : image : lscr.io/linuxserver/calibre-web:latest container_name : calibre-web environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional volumes : - /path/to/data:/config - /path/to/calibre/library:/books ports : - 8083:8083 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = calibre-web \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DOCKER_MODS = linuxserver/mods:universal-calibre ` #optional` \\ -e OAUTHLIB_RELAX_TOKEN_SCOPE = 1 ` #optional` \\ -p 8083 :8083 \\ -v /path/to/data:/config \\ -v /path/to/calibre/library:/books \\ --restart unless-stopped \\ lscr.io/linuxserver/calibre-web:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8083 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_MODS=linuxserver/mods:universal-calibre #optional & x86-64 only Adds the ability to perform ebook conversion OAUTHLIB_RELAX_TOKEN_SCOPE=1 Optionally set this to allow Google OAUTH to work Volume Mappings ( -v ) Volume Function /config Where calibre-web stores the internal database and config. /books Where your preexisting calibre database is located. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it calibre-web /bin/bash To monitor the logs of the container in realtime: docker logs -f calibre-web Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre-web Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre-web:latest Versions 27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev. 20.12.22: - Improve init script and prevent harmless error. 19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies. 04.11.21: - Update pip arguments to ignore distro installed packages. 24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support. 17.05.21: - Add linuxserver wheel index. 10.02.21: - Add libxrandr2 25.01.21: - Add nightly tag 19.01.21: - Add python3-pkg-resources 13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf. 12.10.20: - Add libxi6 12.07.20: - Add kepubify for arm64v8 05.06.20: - Add kepubify for x86-64 and arm32v7 06.05.20: - Add libxslt1.1 and update ImageMagick policy 19.01.20: - Adding LDAP libs. 13.10.19: - Migrate to Python3. 01.08.19: - Add libxcomposite1. 13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar. 02.06.19: - Rebase to Ubuntu Bionic & add Gdrive support. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick. 11.02.19: - Add pipeline logic and multi arch. 03.01.19: - Remove guest user from default app.db. 16.08.18: - Rebase to alpine 3.8. 03.07.18: - New build pushed, all versions below 67 have vulnerability . 05.01.18: - Deprecate cpu_core routine lack of scaling. 06.12.17: - Rebase to alpine 3.7. 27.11.17: - Use cpu core counting routine to speed up build time. 24.07.17: - Curl version for imagemagick. 17.07.17: - Initial release.","title":"calibre-web"},{"location":"images/docker-calibre-web/#linuxservercalibre-web","text":"Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. This software is a fork of library and licensed under the GPL v3 License.","title":"linuxserver/calibre-web"},{"location":"images/docker-calibre-web/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-calibre-web/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Releases of Calibre-Web nightly \u2705 Commits to the master branch of Calibre-Web","title":"Version Tags"},{"location":"images/docker-calibre-web/#application-setup","text":"Webui can be found at http://your-ip:8083 On the initial setup screen, enter /books as your calibre library location. Default admin login: Username: admin Password: admin123 Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar 64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to /usr/bin/ebook-convert This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to /usr/bin/kepubify","title":"Application Setup"},{"location":"images/docker-calibre-web/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-calibre-web/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : calibre-web : image : lscr.io/linuxserver/calibre-web:latest container_name : calibre-web environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional volumes : - /path/to/data:/config - /path/to/calibre/library:/books ports : - 8083:8083 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-calibre-web/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = calibre-web \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DOCKER_MODS = linuxserver/mods:universal-calibre ` #optional` \\ -e OAUTHLIB_RELAX_TOKEN_SCOPE = 1 ` #optional` \\ -p 8083 :8083 \\ -v /path/to/data:/config \\ -v /path/to/calibre/library:/books \\ --restart unless-stopped \\ lscr.io/linuxserver/calibre-web:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-calibre-web/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-calibre-web/#ports-p","text":"Parameter Function 8083 WebUI","title":"Ports (-p)"},{"location":"images/docker-calibre-web/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_MODS=linuxserver/mods:universal-calibre #optional & x86-64 only Adds the ability to perform ebook conversion OAUTHLIB_RELAX_TOKEN_SCOPE=1 Optionally set this to allow Google OAUTH to work","title":"Environment Variables (-e)"},{"location":"images/docker-calibre-web/#volume-mappings-v","text":"Volume Function /config Where calibre-web stores the internal database and config. /books Where your preexisting calibre database is located.","title":"Volume Mappings (-v)"},{"location":"images/docker-calibre-web/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-calibre-web/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-calibre-web/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-calibre-web/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-calibre-web/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-calibre-web/#support-info","text":"Shell access whilst the container is running: docker exec -it calibre-web /bin/bash To monitor the logs of the container in realtime: docker logs -f calibre-web Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre-web Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre-web:latest","title":"Support Info"},{"location":"images/docker-calibre-web/#versions","text":"27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev. 20.12.22: - Improve init script and prevent harmless error. 19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies. 04.11.21: - Update pip arguments to ignore distro installed packages. 24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support. 17.05.21: - Add linuxserver wheel index. 10.02.21: - Add libxrandr2 25.01.21: - Add nightly tag 19.01.21: - Add python3-pkg-resources 13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf. 12.10.20: - Add libxi6 12.07.20: - Add kepubify for arm64v8 05.06.20: - Add kepubify for x86-64 and arm32v7 06.05.20: - Add libxslt1.1 and update ImageMagick policy 19.01.20: - Adding LDAP libs. 13.10.19: - Migrate to Python3. 01.08.19: - Add libxcomposite1. 13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar. 02.06.19: - Rebase to Ubuntu Bionic & add Gdrive support. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick. 11.02.19: - Add pipeline logic and multi arch. 03.01.19: - Remove guest user from default app.db. 16.08.18: - Rebase to alpine 3.8. 03.07.18: - New build pushed, all versions below 67 have vulnerability . 05.01.18: - Deprecate cpu_core routine lack of scaling. 06.12.17: - Rebase to alpine 3.7. 27.11.17: - Use cpu core counting routine to speed up build time. 24.07.17: - Curl version for imagemagick. 17.07.17: - Initial release.","title":"Versions"},{"location":"images/docker-calibre/","text":"linuxserver/calibre Calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup This image sets up the calibre desktop app and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080 . By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc . Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to 8081 although it will then be available at the host mapped port for external access. You can access advanced features of the Guacamole remote desktop using ctrl + alt + shift enabling you to use remote copy/paste and different languages. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : calibre : image : lscr.io/linuxserver/calibre:latest container_name : calibre security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD= #optional - CLI_ARGS= #optional volumes : - /path/to/data:/config ports : - 8080:8080 - 8081:8081 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = calibre \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = ` #optional` \\ -e CLI_ARGS = ` #optional` \\ -p 8080 :8080 \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/calibre:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Calibre desktop gui. 8081 Calibre webserver gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui. CLI_ARGS= Optionally pass cli start arguments to calibre. Volume Mappings ( -v ) Volume Function /config Where calibre should store its database and library. Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it calibre /bin/bash To monitor the logs of the container in realtime: docker logs -f calibre Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre:latest Versions 19.10.22: - Set the window title to Calibre . Remove websocat as it is now handled properly in the baseimage. 18.10.22: - Deprecate Arch branch. 07.10.22: - Start calibre window maximized. 16.09.22: - Rebase to jammy. 24.07.22: - Add arm64 build for master branch. 11.07.22: - Update dependencies for Calibre 6. 28.05.22: - Rebase to focal. 31.03.22: - Fix umask. 28.02.22: - Add speech support to bionic image. 05.01.22: - Add arch branch for arm platforms. 20.04.21: - Fix the HOME folder. 19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables. 18.04.21: - Start calibre on container start rather than gui connect. 15.04.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc . 25.09.20: - Switch to python3, add various new dependencies for calibre 5.0. 10.05.19: - Add new env var CLI_ARGS to pass start arguments to calibre. 18.03.19: - Let Calibre access environment variables, add optional umask setting. 23.10.19: - Remove reccomended deps and zenity for character compatibility. 18.10.19: - Add python-xdg. 08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding. 04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4. 08.08.19: - Add zenity for international character support in dialog boxes. 12.07.19: - Download binary from calibre website instead of github. 29.04.19: - Initial release.","title":"calibre"},{"location":"images/docker-calibre/#linuxservercalibre","text":"Calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts.","title":"linuxserver/calibre"},{"location":"images/docker-calibre/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-calibre/#application-setup","text":"This image sets up the calibre desktop app and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080 . By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc . Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to 8081 although it will then be available at the host mapped port for external access. You can access advanced features of the Guacamole remote desktop using ctrl + alt + shift enabling you to use remote copy/paste and different languages.","title":"Application Setup"},{"location":"images/docker-calibre/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-calibre/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : calibre : image : lscr.io/linuxserver/calibre:latest container_name : calibre security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD= #optional - CLI_ARGS= #optional volumes : - /path/to/data:/config ports : - 8080:8080 - 8081:8081 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-calibre/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = calibre \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = ` #optional` \\ -e CLI_ARGS = ` #optional` \\ -p 8080 :8080 \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/calibre:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-calibre/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-calibre/#ports-p","text":"Parameter Function 8080 Calibre desktop gui. 8081 Calibre webserver gui.","title":"Ports (-p)"},{"location":"images/docker-calibre/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui. CLI_ARGS= Optionally pass cli start arguments to calibre.","title":"Environment Variables (-e)"},{"location":"images/docker-calibre/#volume-mappings-v","text":"Volume Function /config Where calibre should store its database and library.","title":"Volume Mappings (-v)"},{"location":"images/docker-calibre/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-calibre/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-calibre/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-calibre/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-calibre/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-calibre/#support-info","text":"Shell access whilst the container is running: docker exec -it calibre /bin/bash To monitor the logs of the container in realtime: docker logs -f calibre Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre:latest","title":"Support Info"},{"location":"images/docker-calibre/#versions","text":"19.10.22: - Set the window title to Calibre . Remove websocat as it is now handled properly in the baseimage. 18.10.22: - Deprecate Arch branch. 07.10.22: - Start calibre window maximized. 16.09.22: - Rebase to jammy. 24.07.22: - Add arm64 build for master branch. 11.07.22: - Update dependencies for Calibre 6. 28.05.22: - Rebase to focal. 31.03.22: - Fix umask. 28.02.22: - Add speech support to bionic image. 05.01.22: - Add arch branch for arm platforms. 20.04.21: - Fix the HOME folder. 19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables. 18.04.21: - Start calibre on container start rather than gui connect. 15.04.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc . 25.09.20: - Switch to python3, add various new dependencies for calibre 5.0. 10.05.19: - Add new env var CLI_ARGS to pass start arguments to calibre. 18.03.19: - Let Calibre access environment variables, add optional umask setting. 23.10.19: - Remove reccomended deps and zenity for character compatibility. 18.10.19: - Add python-xdg. 08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding. 04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4. 08.08.19: - Add zenity for international character support in dialog boxes. 12.07.19: - Download binary from calibre website instead of github. 29.04.19: - Initial release.","title":"Versions"},{"location":"images/docker-cardigann/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett. linuxserver/cardigann Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=cardigann \\ -e PUID=1000 \\ -e PGID=1000 \\ -e SOCKS_PROXY=IP:PORT \\ -e HTTP_PROXY=IP:PORT \\ -p 5060:5060 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/cardigann docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : cardigann : image : linuxserver/cardigann container_name : cardigann environment : - PUID=1000 - PGID=1000 - SOCKS_PROXY=IP:PORT - HTTP_PROXY=IP:PORT volumes : - :/config ports : - 5060:5060 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5060 The port for the Cardigann webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SOCKS_PROXY=IP:PORT for using a socks proxy (optional) HTTP_PROXY=IP:PORT for using a HTTP proxy (optional) Volume Mappings ( -v ) Volume Function /config Cardigann config User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Access the webui at :5060 , for more information check out Cardigann . By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080 The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ). Support Info Shell access whilst the container is running: docker exec -it cardigann /bin/bash To monitor the logs of the container in realtime: docker logs -f cardigann Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cardigann Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/cardigann Versions 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.02.19: - Multi arch images and pipeline build logic 14.01.19: - Add multi arch and pipeline logic 22.08.18: - Rebase to alpine 3.8 06.05.18: - Use buildstage in Dockerfile 06.12.17: - Rebase to alpine 3.7 12.08.17: - Add npm install to build stage 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 03.11.16: - Compiled using sstamoulis' method 01.11.16: - Initial Release","title":"cardigann"},{"location":"images/docker-cardigann/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett.","title":"DEPRECATION NOTICE"},{"location":"images/docker-cardigann/#linuxservercardigann","text":"Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format.","title":"linuxserver/cardigann"},{"location":"images/docker-cardigann/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-cardigann/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-cardigann/#docker","text":"docker create \\ --name=cardigann \\ -e PUID=1000 \\ -e PGID=1000 \\ -e SOCKS_PROXY=IP:PORT \\ -e HTTP_PROXY=IP:PORT \\ -p 5060:5060 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/cardigann","title":"docker"},{"location":"images/docker-cardigann/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : cardigann : image : linuxserver/cardigann container_name : cardigann environment : - PUID=1000 - PGID=1000 - SOCKS_PROXY=IP:PORT - HTTP_PROXY=IP:PORT volumes : - :/config ports : - 5060:5060 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-cardigann/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-cardigann/#ports-p","text":"Parameter Function 5060 The port for the Cardigann webinterface","title":"Ports (-p)"},{"location":"images/docker-cardigann/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SOCKS_PROXY=IP:PORT for using a socks proxy (optional) HTTP_PROXY=IP:PORT for using a HTTP proxy (optional)","title":"Environment Variables (-e)"},{"location":"images/docker-cardigann/#volume-mappings-v","text":"Volume Function /config Cardigann config","title":"Volume Mappings (-v)"},{"location":"images/docker-cardigann/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-cardigann/#application-setup","text":"Access the webui at :5060 , for more information check out Cardigann . By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080 The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ).","title":"Application Setup"},{"location":"images/docker-cardigann/#support-info","text":"Shell access whilst the container is running: docker exec -it cardigann /bin/bash To monitor the logs of the container in realtime: docker logs -f cardigann Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cardigann Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/cardigann","title":"Support Info"},{"location":"images/docker-cardigann/#versions","text":"23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.02.19: - Multi arch images and pipeline build logic 14.01.19: - Add multi arch and pipeline logic 22.08.18: - Rebase to alpine 3.8 06.05.18: - Use buildstage in Dockerfile 06.12.17: - Rebase to alpine 3.7 12.08.17: - Add npm install to build stage 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 03.11.16: - Compiled using sstamoulis' method 01.11.16: - Initial Release","title":"Versions"},{"location":"images/docker-changedetection.io/","text":"linuxserver/changedetection.io Changedetection.io provides free, open-source web page monitoring, notification and change detection. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Webui is accessible at http://SERVERIP:PORT Please note that this image does not contain the Playwright content fetcher due to a lack of support for muslc-based systems. If you require this feature please use Selenium or the official container For more info read the wiki . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : changedetection : image : lscr.io/linuxserver/changedetection.io:latest container_name : changedetection environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BASE_URL= #optional volumes : - /path/to/appdata/config:/config ports : - 5000:5000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = changedetection.io \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e BASE_URL = ` #optional` \\ -p 5000 :5000 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/changedetection.io:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5000 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL= Specify the full URL (including protocol) when running behind a reverse proxy Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it changedetection.io /bin/bash To monitor the logs of the container in realtime: docker logs -f changedetection.io Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' changedetection.io Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/changedetection.io:latest Versions 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 09.10.22: - Add make as build dep to fix pip jq build on armhf. 07.08.22: - Initial release.","title":"changedetection.io"},{"location":"images/docker-changedetection.io/#linuxserverchangedetectionio","text":"Changedetection.io provides free, open-source web page monitoring, notification and change detection.","title":"linuxserver/changedetection.io"},{"location":"images/docker-changedetection.io/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-changedetection.io/#application-setup","text":"Webui is accessible at http://SERVERIP:PORT Please note that this image does not contain the Playwright content fetcher due to a lack of support for muslc-based systems. If you require this feature please use Selenium or the official container For more info read the wiki .","title":"Application Setup"},{"location":"images/docker-changedetection.io/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-changedetection.io/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : changedetection : image : lscr.io/linuxserver/changedetection.io:latest container_name : changedetection environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BASE_URL= #optional volumes : - /path/to/appdata/config:/config ports : - 5000:5000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-changedetection.io/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = changedetection.io \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e BASE_URL = ` #optional` \\ -p 5000 :5000 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/changedetection.io:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-changedetection.io/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-changedetection.io/#ports-p","text":"Parameter Function 5000 WebUI","title":"Ports (-p)"},{"location":"images/docker-changedetection.io/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL= Specify the full URL (including protocol) when running behind a reverse proxy","title":"Environment Variables (-e)"},{"location":"images/docker-changedetection.io/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-changedetection.io/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-changedetection.io/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-changedetection.io/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-changedetection.io/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-changedetection.io/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-changedetection.io/#support-info","text":"Shell access whilst the container is running: docker exec -it changedetection.io /bin/bash To monitor the logs of the container in realtime: docker logs -f changedetection.io Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' changedetection.io Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/changedetection.io:latest","title":"Support Info"},{"location":"images/docker-changedetection.io/#versions","text":"23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 09.10.22: - Add make as build dep to fix pip jq build on armhf. 07.08.22: - Initial release.","title":"Versions"},{"location":"images/docker-chevereto/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/ linuxserver/chevereto Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Chevereto-Free now has a maintainer! ~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~ Access the WebUI at :443. For more information, check out Chevereto Free . Chevereto requires a MariaDB database, we have an image available here if you require it. If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set set_real_ip_from to match the IP address/address block of your proxy server(s). Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2\" services : chevereto : image : lscr.io/linuxserver/chevereto container_name : chevereto environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 80:80 - 443:443 restart : unless-stopped depends_on : - chevereto-db chevereto-db : image : lscr.io/linuxserver/mariadb container_name : chevereto-db environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MYSQL_ROOT_PASSWORD= - MYSQL_DATABASE=chevereto - MYSQL_USER=chevereto - MYSQL_PASSWORD= volumes : - /path/to/config:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = chevereto \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/chevereto:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui 443 https gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= Timezone (i.e., America/New_York) Volume Mappings ( -v ) Volume Function /config config directory volume mapping /data data directory volume mapping Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it chevereto /bin/bash To monitor the logs of the container in realtime: docker logs -f chevereto Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chevereto Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chevereto:latest Versions 13.06.22: - Deprecate. 13.11.21: - Add composer to fix missing dependencies. 21.10.21: - Removed deprecation warning, change reposiory links. 22.07.21: - Rebase to Alpine 3.14. 28.08.20: - Initial Release.","title":"chevereto"},{"location":"images/docker-chevereto/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/","title":"DEPRECATION NOTICE"},{"location":"images/docker-chevereto/#linuxserverchevereto","text":"Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.","title":"linuxserver/chevereto"},{"location":"images/docker-chevereto/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-chevereto/#application-setup","text":"Chevereto-Free now has a maintainer! ~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~ Access the WebUI at :443. For more information, check out Chevereto Free . Chevereto requires a MariaDB database, we have an image available here if you require it. If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set set_real_ip_from to match the IP address/address block of your proxy server(s).","title":"Application Setup"},{"location":"images/docker-chevereto/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-chevereto/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2\" services : chevereto : image : lscr.io/linuxserver/chevereto container_name : chevereto environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 80:80 - 443:443 restart : unless-stopped depends_on : - chevereto-db chevereto-db : image : lscr.io/linuxserver/mariadb container_name : chevereto-db environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MYSQL_ROOT_PASSWORD= - MYSQL_DATABASE=chevereto - MYSQL_USER=chevereto - MYSQL_PASSWORD= volumes : - /path/to/config:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-chevereto/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = chevereto \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/chevereto:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-chevereto/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-chevereto/#ports-p","text":"Parameter Function 80 http gui 443 https gui","title":"Ports (-p)"},{"location":"images/docker-chevereto/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= Timezone (i.e., America/New_York)","title":"Environment Variables (-e)"},{"location":"images/docker-chevereto/#volume-mappings-v","text":"Volume Function /config config directory volume mapping /data data directory volume mapping","title":"Volume Mappings (-v)"},{"location":"images/docker-chevereto/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-chevereto/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-chevereto/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-chevereto/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-chevereto/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-chevereto/#support-info","text":"Shell access whilst the container is running: docker exec -it chevereto /bin/bash To monitor the logs of the container in realtime: docker logs -f chevereto Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chevereto Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chevereto:latest","title":"Support Info"},{"location":"images/docker-chevereto/#versions","text":"13.06.22: - Deprecate. 13.11.21: - Add composer to fix missing dependencies. 21.10.21: - Removed deprecation warning, change reposiory links. 22.07.21: - Rebase to Alpine 3.14. 28.08.20: - Initial Release.","title":"Versions"},{"location":"images/docker-ci/","text":"Contact information:- Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast linuxserver/ci This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built. Usage The container can be run locally, but it is meant to be integrated into the LinuxServer build process: sudo docker run --rm -i \\ -v /var/run/docker.sock:/var/run/docker.sock \\ -e IMAGE=\"linuxserver/\" \\ -e TAGS=\"\" \\ -e META_TAG= \\ -e BASE= \\ -e SECRET_KEY= \\ -e ACCESS_KEY= \\ -e DOCKER_ENV=\"\" \\ -e WEB_AUTH=\"\" \\ -e WEB_PATH=\". Defaults to ''.\" \\ -e S3_REGION= \\ -e S3_BUCKET= \\ -e WEB_SCREENSHOT_DELAY= -e WEB_SCREENSHOT= \\ -e DELAY_START= \\ -e PORT= \\ -e SSL= \\ -e CI_S6_VERBOSITY= -t lsiodev/ci:latest \\ python3 test_build.py The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"ci"},{"location":"images/docker-ci/#contact-information-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast","title":"Contact information:-"},{"location":"images/docker-ci/#linuxserverci","text":"This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built.","title":"linuxserver/ci"},{"location":"images/docker-ci/#usage","text":"The container can be run locally, but it is meant to be integrated into the LinuxServer build process: sudo docker run --rm -i \\ -v /var/run/docker.sock:/var/run/docker.sock \\ -e IMAGE=\"linuxserver/\" \\ -e TAGS=\"\" \\ -e META_TAG= \\ -e BASE= \\ -e SECRET_KEY= \\ -e ACCESS_KEY= \\ -e DOCKER_ENV=\"\" \\ -e WEB_AUTH=\"\" \\ -e WEB_PATH=\". Defaults to ''.\" \\ -e S3_REGION= \\ -e S3_BUCKET= \\ -e WEB_SCREENSHOT_DELAY= -e WEB_SCREENSHOT= \\ -e DELAY_START= \\ -e PORT= \\ -e SSL= \\ -e CI_S6_VERBOSITY= -t lsiodev/ci:latest \\ python3 test_build.py The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Usage"},{"location":"images/docker-clarkson/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond linuxserver/clarkson Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Application Setup Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container . It is preferred if you create the clarkson schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the \"clarkson\" user will not have permission to create the schema on your behalf. You can, of course, use the \"root\" user, which has the ability to create schemas automatically, but this is not recommended. CREATE SCHEMA ` clarkson ` ; CREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword' ; GRANT ALL ON ` clarkson ` . * TO 'clarkson_user' ; Once running, the container will run an initial MySQL migration, which populates the schema with all tables and procedures. The application will start immediately afterwards. You will need to register an initial user, of which will be the admin of the application. All subsequent users will be standard users. You can disable registrations after the fact by recreating the container with the ENABLE_REGISTRATIONS flag set to false . This will not hide the \"Register\" link, but will disable the functionality. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : clarkson : image : lscr.io/linuxserver/clarkson container_name : clarkson environment : - PUID=1000 - PGID=1000 - MYSQL_HOST= - MYSQL_USERNAME= - MYSQL_PASSWORD= - ENABLE_REGISTRATIONS= - TZ=Europe/London ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = clarkson \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_HOST = \\ -e MYSQL_USERNAME = \\ -e MYSQL_PASSWORD = \\ -e ENABLE_REGISTRATIONS = \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ --restart unless-stopped \\ lscr.io/linuxserver/clarkson Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_HOST= Points the backend to the MySQL database. This can be either a docker hostname or an IP. MYSQL_USERNAME= The user with access to the clarkson schema. MYSQL_PASSWORD= The password for the user. ENABLE_REGISTRATIONS= Defaults to false . If set to true , allows new users to register. TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it clarkson /bin/bash To monitor the logs of the container in realtime: docker logs -f clarkson Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' clarkson Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/clarkson Versions 19.01.22: - Deprecate. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 23.03.19: - Updating runtime dependancies for the JRE. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 22.08.18: - Rebase to alpine linux 3.8. 19.02.18: - Initial Release.","title":"clarkson"},{"location":"images/docker-clarkson/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond","title":"DEPRECATION NOTICE"},{"location":"images/docker-clarkson/#linuxserverclarkson","text":"Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.","title":"linuxserver/clarkson"},{"location":"images/docker-clarkson/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-clarkson/#application-setup","text":"Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container . It is preferred if you create the clarkson schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the \"clarkson\" user will not have permission to create the schema on your behalf. You can, of course, use the \"root\" user, which has the ability to create schemas automatically, but this is not recommended. CREATE SCHEMA ` clarkson ` ; CREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword' ; GRANT ALL ON ` clarkson ` . * TO 'clarkson_user' ; Once running, the container will run an initial MySQL migration, which populates the schema with all tables and procedures. The application will start immediately afterwards. You will need to register an initial user, of which will be the admin of the application. All subsequent users will be standard users. You can disable registrations after the fact by recreating the container with the ENABLE_REGISTRATIONS flag set to false . This will not hide the \"Register\" link, but will disable the functionality.","title":"Application Setup"},{"location":"images/docker-clarkson/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-clarkson/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : clarkson : image : lscr.io/linuxserver/clarkson container_name : clarkson environment : - PUID=1000 - PGID=1000 - MYSQL_HOST= - MYSQL_USERNAME= - MYSQL_PASSWORD= - ENABLE_REGISTRATIONS= - TZ=Europe/London ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-clarkson/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = clarkson \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_HOST = \\ -e MYSQL_USERNAME = \\ -e MYSQL_PASSWORD = \\ -e ENABLE_REGISTRATIONS = \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ --restart unless-stopped \\ lscr.io/linuxserver/clarkson","title":"docker cli (click here for more info)"},{"location":"images/docker-clarkson/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-clarkson/#ports-p","text":"Parameter Function 3000 WebUI","title":"Ports (-p)"},{"location":"images/docker-clarkson/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_HOST= Points the backend to the MySQL database. This can be either a docker hostname or an IP. MYSQL_USERNAME= The user with access to the clarkson schema. MYSQL_PASSWORD= The password for the user. ENABLE_REGISTRATIONS= Defaults to false . If set to true , allows new users to register. TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-clarkson/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-clarkson/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-clarkson/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-clarkson/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-clarkson/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-clarkson/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-clarkson/#support-info","text":"Shell access whilst the container is running: docker exec -it clarkson /bin/bash To monitor the logs of the container in realtime: docker logs -f clarkson Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' clarkson Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/clarkson","title":"Support Info"},{"location":"images/docker-clarkson/#versions","text":"19.01.22: - Deprecate. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 23.03.19: - Updating runtime dependancies for the JRE. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 22.08.18: - Rebase to alpine linux 3.8. 19.02.18: - Initial Release.","title":"Versions"},{"location":"images/docker-cloud9/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server linuxserver/cloud9 Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Docker and Compose environment pre-installed go \u2705 Basic Golang environment pre-installed nodejs \u2705 Current stable NodeJS/NPM environment pre-installed python \u2705 Current Python3 environment pre-installed ruby \u2705 Current Ruby environment pre-installed Application Setup Access the webui at http://your-ip:8000, for more information check out here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : cloud9 : image : lscr.io/linuxserver/cloud9:latest container_name : cloud9 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - GITURL=https://github.com/linuxserver/docker-cloud9.git #optional - USERNAME= #optional - PASSWORD= #optional volumes : - /path/to/your/code:/code #optional - /var/run/docker.sock:/var/run/docker.sock #optional ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = cloud9 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e GITURL = https://github.com/linuxserver/docker-cloud9.git ` #optional` \\ -e USERNAME = ` #optional` \\ -e PASSWORD = ` #optional` \\ -p 8000 :8000 \\ -v /path/to/your/code:/code ` #optional` \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/cloud9:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 The port for the Cloud9 web interface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-cloud9.git Specify a git repo to checkout on first startup USERNAME= Optionally specify a username for http auth PASSWORD= Optionally specify a password for http auth (if USERNAME and PASSWORD are not set, there will be no http auth) Volume Mappings ( -v ) Volume Function /code Optionally if you want to mount up a local folder of code instead of checking out /var/run/docker.sock Needed if you plan to use Docker or compose commands Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it cloud9 /bin/bash To monitor the logs of the container in realtime: docker logs -f cloud9 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cloud9 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cloud9:latest Versions 23.06.22: - Deprecate image. 24.06.21: - Use prebuilt compose binaries for the linuxserver repo. 07.02.20: - Add optional http auth. 02.06.19: - Initial Release.","title":"cloud9"},{"location":"images/docker-cloud9/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server","title":"DEPRECATION NOTICE"},{"location":"images/docker-cloud9/#linuxservercloud9","text":"Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.","title":"linuxserver/cloud9"},{"location":"images/docker-cloud9/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-cloud9/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Docker and Compose environment pre-installed go \u2705 Basic Golang environment pre-installed nodejs \u2705 Current stable NodeJS/NPM environment pre-installed python \u2705 Current Python3 environment pre-installed ruby \u2705 Current Ruby environment pre-installed","title":"Version Tags"},{"location":"images/docker-cloud9/#application-setup","text":"Access the webui at http://your-ip:8000, for more information check out here .","title":"Application Setup"},{"location":"images/docker-cloud9/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-cloud9/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : cloud9 : image : lscr.io/linuxserver/cloud9:latest container_name : cloud9 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - GITURL=https://github.com/linuxserver/docker-cloud9.git #optional - USERNAME= #optional - PASSWORD= #optional volumes : - /path/to/your/code:/code #optional - /var/run/docker.sock:/var/run/docker.sock #optional ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-cloud9/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = cloud9 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e GITURL = https://github.com/linuxserver/docker-cloud9.git ` #optional` \\ -e USERNAME = ` #optional` \\ -e PASSWORD = ` #optional` \\ -p 8000 :8000 \\ -v /path/to/your/code:/code ` #optional` \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/cloud9:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-cloud9/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-cloud9/#ports-p","text":"Parameter Function 8000 The port for the Cloud9 web interface","title":"Ports (-p)"},{"location":"images/docker-cloud9/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-cloud9.git Specify a git repo to checkout on first startup USERNAME= Optionally specify a username for http auth PASSWORD= Optionally specify a password for http auth (if USERNAME and PASSWORD are not set, there will be no http auth)","title":"Environment Variables (-e)"},{"location":"images/docker-cloud9/#volume-mappings-v","text":"Volume Function /code Optionally if you want to mount up a local folder of code instead of checking out /var/run/docker.sock Needed if you plan to use Docker or compose commands","title":"Volume Mappings (-v)"},{"location":"images/docker-cloud9/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-cloud9/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-cloud9/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-cloud9/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-cloud9/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-cloud9/#support-info","text":"Shell access whilst the container is running: docker exec -it cloud9 /bin/bash To monitor the logs of the container in realtime: docker logs -f cloud9 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cloud9 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cloud9:latest","title":"Support Info"},{"location":"images/docker-cloud9/#versions","text":"23.06.22: - Deprecate image. 24.06.21: - Use prebuilt compose binaries for the linuxserver repo. 07.02.20: - Add optional http auth. 02.06.19: - Initial Release.","title":"Versions"},{"location":"images/docker-code-server/","text":"linuxserver/code-server Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http://:8443 . For github integration, drop your ssh key in to /config/.ssh . Then open a terminal from the top menu and set your github username and email via the following commands git config --global user.name \"username\" git config --global user.email \"email address\" Hashed code-server password How to create the hashed password . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : code-server : image : lscr.io/linuxserver/code-server:latest container_name : code-server environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD=password #optional - HASHED_PASSWORD= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional - PROXY_DOMAIN=code-server.my.domain #optional - DEFAULT_WORKSPACE=/config/workspace #optional volumes : - /path/to/appdata/config:/config ports : - 8443:8443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = code-server \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = password ` #optional` \\ -e HASHED_PASSWORD = ` #optional` \\ -e SUDO_PASSWORD = password ` #optional` \\ -e SUDO_PASSWORD_HASH = ` #optional` \\ -e PROXY_DOMAIN = code-server.my.domain ` #optional` \\ -e DEFAULT_WORKSPACE = /config/workspace ` #optional` \\ -p 8443 :8443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/code-server:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8443 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=password Optional web gui password, if PASSWORD or HASHED_PASSWORD is not provided, there will be no auth. HASHED_PASSWORD= Optional web gui password, overrides PASSWORD , instructions on how to create it is below. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed . PROXY_DOMAIN=code-server.my.domain If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation DEFAULT_WORKSPACE=/config/workspace If this optional variable is set, code-server will open this directory by default Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it code-server /bin/bash To monitor the logs of the container in realtime: docker logs -f code-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' code-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/code-server:latest Versions 05.10.22: - Install recommended deps to maintain parity with the older images. 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents. 20.02.22: - Install using the official tarballs. 29.12.21: - Add install-extension as a helper for mods to install extensions. 06.12.21: - Add DEFAULT_WORKSPACE env var. 29.11.21: - Rebase to Ubuntu focal. 16.09.21: - Fix slow chown on large workspace (contents of workspace folder no longer chowned). 11.07.21: - Bump node to 14 to fix builds 08.05.21: - Fix doc link 04.02.20: - Allow setting gui password via hash using env var HASHED_PASSWORD . 23.12.20: - Allow setting sudo password via hash using env var SUDO_PASSWORD_HASH . 29.05.20: - Add --domain-proxy support. 21.05.20: - Shrink images, install via yarn, fix arm32v7 build. 18.05.20: - Switch to multi-arch images, install via npm. 29.04.20: - Update start arguments. 01.04.20: - Structural changes required for v3. 17.01.20: - Fix artifact url retrieval from github. 24.10.19: - Upgrade to v2 builds. 28.09.19: - Update project logo. 21.09.19: - Add development builds/tag. 09.07.19: - Add optional sudo access. 01.07.19: - Add nano. 24.06.19: - Initial Release.","title":"code-server"},{"location":"images/docker-code-server/#linuxservercode-server","text":"Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.","title":"linuxserver/code-server"},{"location":"images/docker-code-server/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-code-server/#application-setup","text":"Access the webui at http://:8443 . For github integration, drop your ssh key in to /config/.ssh . Then open a terminal from the top menu and set your github username and email via the following commands git config --global user.name \"username\" git config --global user.email \"email address\"","title":"Application Setup"},{"location":"images/docker-code-server/#hashed-code-server-password","text":"How to create the hashed password .","title":"Hashed code-server password"},{"location":"images/docker-code-server/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-code-server/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : code-server : image : lscr.io/linuxserver/code-server:latest container_name : code-server environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD=password #optional - HASHED_PASSWORD= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional - PROXY_DOMAIN=code-server.my.domain #optional - DEFAULT_WORKSPACE=/config/workspace #optional volumes : - /path/to/appdata/config:/config ports : - 8443:8443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-code-server/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = code-server \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = password ` #optional` \\ -e HASHED_PASSWORD = ` #optional` \\ -e SUDO_PASSWORD = password ` #optional` \\ -e SUDO_PASSWORD_HASH = ` #optional` \\ -e PROXY_DOMAIN = code-server.my.domain ` #optional` \\ -e DEFAULT_WORKSPACE = /config/workspace ` #optional` \\ -p 8443 :8443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/code-server:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-code-server/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-code-server/#ports-p","text":"Parameter Function 8443 web gui","title":"Ports (-p)"},{"location":"images/docker-code-server/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=password Optional web gui password, if PASSWORD or HASHED_PASSWORD is not provided, there will be no auth. HASHED_PASSWORD= Optional web gui password, overrides PASSWORD , instructions on how to create it is below. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed . PROXY_DOMAIN=code-server.my.domain If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation DEFAULT_WORKSPACE=/config/workspace If this optional variable is set, code-server will open this directory by default","title":"Environment Variables (-e)"},{"location":"images/docker-code-server/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-code-server/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-code-server/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-code-server/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-code-server/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-code-server/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-code-server/#support-info","text":"Shell access whilst the container is running: docker exec -it code-server /bin/bash To monitor the logs of the container in realtime: docker logs -f code-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' code-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/code-server:latest","title":"Support Info"},{"location":"images/docker-code-server/#versions","text":"05.10.22: - Install recommended deps to maintain parity with the older images. 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents. 20.02.22: - Install using the official tarballs. 29.12.21: - Add install-extension as a helper for mods to install extensions. 06.12.21: - Add DEFAULT_WORKSPACE env var. 29.11.21: - Rebase to Ubuntu focal. 16.09.21: - Fix slow chown on large workspace (contents of workspace folder no longer chowned). 11.07.21: - Bump node to 14 to fix builds 08.05.21: - Fix doc link 04.02.20: - Allow setting gui password via hash using env var HASHED_PASSWORD . 23.12.20: - Allow setting sudo password via hash using env var SUDO_PASSWORD_HASH . 29.05.20: - Add --domain-proxy support. 21.05.20: - Shrink images, install via yarn, fix arm32v7 build. 18.05.20: - Switch to multi-arch images, install via npm. 29.04.20: - Update start arguments. 01.04.20: - Structural changes required for v3. 17.01.20: - Fix artifact url retrieval from github. 24.10.19: - Upgrade to v2 builds. 28.09.19: - Update project logo. 21.09.19: - Add development builds/tag. 09.07.19: - Add optional sudo access. 01.07.19: - Add nano. 24.06.19: - Initial Release.","title":"Versions"},{"location":"images/docker-codiad/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9 linuxserver/codiad Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=codiad \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 80:80 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/codiad docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : codiad : image : linuxserver/codiad container_name : codiad environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where Codiad stores data. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Support Info Shell access whilst the container is running: docker exec -it codiad /bin/bash To monitor the logs of the container in realtime: docker logs -f codiad Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codiad Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/codiad Versions 10.06.19: - Deprecate Image. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9, adding ssh client. 16.01.19: - Add pipeline logic and multi arch. 26.09.18: - Add sed to init file to configure projects folder correctly. 04.09.18: - Rebase to alpine linux 3.8. 09.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 18.02.17: - Rebase to alpine linux 3.5. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 06.11.15: - Initial Release.","title":"codiad"},{"location":"images/docker-codiad/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9","title":"DEPRECATION NOTICE"},{"location":"images/docker-codiad/#linuxservercodiad","text":"Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI.","title":"linuxserver/codiad"},{"location":"images/docker-codiad/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-codiad/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-codiad/#docker","text":"docker create \\ --name=codiad \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 80:80 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/codiad","title":"docker"},{"location":"images/docker-codiad/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : codiad : image : linuxserver/codiad container_name : codiad environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-codiad/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-codiad/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-codiad/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-codiad/#volume-mappings-v","text":"Volume Function /config Where Codiad stores data.","title":"Volume Mappings (-v)"},{"location":"images/docker-codiad/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-codiad/#support-info","text":"Shell access whilst the container is running: docker exec -it codiad /bin/bash To monitor the logs of the container in realtime: docker logs -f codiad Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codiad Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/codiad","title":"Support Info"},{"location":"images/docker-codiad/#versions","text":"10.06.19: - Deprecate Image. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9, adding ssh client. 16.01.19: - Add pipeline logic and multi arch. 26.09.18: - Add sed to init file to configure projects folder correctly. 04.09.18: - Rebase to alpine linux 3.8. 09.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 18.02.17: - Rebase to alpine linux 3.5. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 06.11.15: - Initial Release.","title":"Versions"},{"location":"images/docker-codimd/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/codimd Codimd gives you access to all your files wherever you are. CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. version : \"3\" services : mariadb : image : linuxserver/mariadb:latest container_name : codimd_mariadb restart : always volumes : - :/config environment : - MYSQL_ROOT_PASSWORD= - MYSQL_DATABASE=codimd - MYSQL_USER=codimd - MYSQL_PASSWORD= - PGID=1000 - PUID=1000 - TZ=Europe/London codimd : image : linuxserver/codimd:latest container_name : codimd restart : always depends_on : - mariadb volumes : - :/config environment : - DB_HOST=mariadb - DB_USER=codimd - DB_PASS= - DB_NAME=codimd - DB_PORT=3306 - PGID=1000 - PUID=1000 - TZ=Europe/London ports : - \"3000:3000\" docker cli docker run -d \\ --name=codimd \\ -e PUID=1000 \\ -e PGID=1000 \\ -e DB_HOST= \\ -e DB_PORT=3306 \\ -e DB_USER=codimd \\ -e DB_PASS= \\ -e DB_NAME=codimd \\ -e TZ=Europe/London \\ -p 3000:3000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/codimd Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 If you wish to access this container from http://{IP}:${PORT}` this must be left unchanged. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST= Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=codimd Database user DB_PASS= Database password DB_NAME=codimd Database name TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config CodiMD config and configurable files Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc . CodiMD web interface can be accessed http://${IP}:3000/ , if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT) Full list of CodiMD options For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above. To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it codimd /bin/bash To monitor the logs of the container in realtime: docker logs -f codimd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codimd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/codimd Versions 22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc . 23.05.19: - Initial release","title":"codimd"},{"location":"images/docker-codimd/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-codimd/#linuxservercodimd","text":"Codimd gives you access to all your files wherever you are. CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.","title":"linuxserver/codimd"},{"location":"images/docker-codimd/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-codimd/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-codimd/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. version : \"3\" services : mariadb : image : linuxserver/mariadb:latest container_name : codimd_mariadb restart : always volumes : - :/config environment : - MYSQL_ROOT_PASSWORD= - MYSQL_DATABASE=codimd - MYSQL_USER=codimd - MYSQL_PASSWORD= - PGID=1000 - PUID=1000 - TZ=Europe/London codimd : image : linuxserver/codimd:latest container_name : codimd restart : always depends_on : - mariadb volumes : - :/config environment : - DB_HOST=mariadb - DB_USER=codimd - DB_PASS= - DB_NAME=codimd - DB_PORT=3306 - PGID=1000 - PUID=1000 - TZ=Europe/London ports : - \"3000:3000\"","title":"docker-compose (recommended)"},{"location":"images/docker-codimd/#docker-cli","text":"docker run -d \\ --name=codimd \\ -e PUID=1000 \\ -e PGID=1000 \\ -e DB_HOST= \\ -e DB_PORT=3306 \\ -e DB_USER=codimd \\ -e DB_PASS= \\ -e DB_NAME=codimd \\ -e TZ=Europe/London \\ -p 3000:3000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/codimd","title":"docker cli"},{"location":"images/docker-codimd/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-codimd/#ports-p","text":"Parameter Function 3000 If you wish to access this container from http://{IP}:${PORT}` this must be left unchanged.","title":"Ports (-p)"},{"location":"images/docker-codimd/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST= Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=codimd Database user DB_PASS= Database password DB_NAME=codimd Database name TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-codimd/#volume-mappings-v","text":"Volume Function /config CodiMD config and configurable files","title":"Volume Mappings (-v)"},{"location":"images/docker-codimd/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-codimd/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-codimd/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-codimd/#application-setup","text":"THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc . CodiMD web interface can be accessed http://${IP}:3000/ , if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT) Full list of CodiMD options For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above. To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository","title":"Application Setup"},{"location":"images/docker-codimd/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-codimd/#support-info","text":"Shell access whilst the container is running: docker exec -it codimd /bin/bash To monitor the logs of the container in realtime: docker logs -f codimd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codimd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/codimd","title":"Support Info"},{"location":"images/docker-codimd/#versions","text":"22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc . 23.05.19: - Initial release","title":"Versions"},{"location":"images/docker-cops/","text":"linuxserver/cops Cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices. Changes in your Calibre library are reflected immediately in your COPS pages. See : COPS's home for more details. Don't forget to check the Wiki . Why? (taken from the author's site) In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server. That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case). I initially thought of Calibre2OPDS but as it generate static file no search was possible. Later I added an simple HTML catalog that should be usable on my Kobo. So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code. If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http://:80 . For connecting via OPDS on a mobile device use http://:80/feed.php . It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above). The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : cops : image : lscr.io/linuxserver/cops:latest container_name : cops environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/books ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = cops \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ -v :/books \\ --restart unless-stopped \\ lscr.io/linuxserver/cops:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config COPS Application Data. /books Calibre metadata.db location. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it cops /bin/bash To monitor the logs of the container in realtime: docker logs -f cops Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cops Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cops:latest Versions 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.11.20: - Pin composer version to 1.10.17. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 27.02.19: - Upgrade packages during install to prevent mismatch with baseimage. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Add multiarch and pipeline logic. 21.08.18: - Rebase to alpine 3.8. 02.07.18: - Add php7-ctype dependency. 08.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.04.17: - Add composer packages, reduce layers. 02.04.17: - Updated to version 1.1.0. 05.02.17: - Updated to Alpine 3.5 & PHP7. 24.10.16: - Updated to implement user based config. 24.10.16: - Updated to version 1.0.1. 14.10.16: - Add version layer information. 28.09.16: - Add php5-zlib. 11.09.16: - Add layer badges to README. 29.08.16: - Add php5-opcache. 28.08.16: - Add badges to README. 12.08.16: - Initial Release.","title":"cops"},{"location":"images/docker-cops/#linuxservercops","text":"Cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices. Changes in your Calibre library are reflected immediately in your COPS pages. See : COPS's home for more details. Don't forget to check the Wiki .","title":"linuxserver/cops"},{"location":"images/docker-cops/#why-taken-from-the-authors-site","text":"In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server. That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case). I initially thought of Calibre2OPDS but as it generate static file no search was possible. Later I added an simple HTML catalog that should be usable on my Kobo. So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code. If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.","title":"Why? (taken from the author's site)"},{"location":"images/docker-cops/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-cops/#application-setup","text":"Access the webui at http://:80 . For connecting via OPDS on a mobile device use http://:80/feed.php . It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above). The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.","title":"Application Setup"},{"location":"images/docker-cops/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-cops/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : cops : image : lscr.io/linuxserver/cops:latest container_name : cops environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/books ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-cops/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = cops \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ -v :/books \\ --restart unless-stopped \\ lscr.io/linuxserver/cops:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-cops/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-cops/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-cops/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-cops/#volume-mappings-v","text":"Volume Function /config COPS Application Data. /books Calibre metadata.db location.","title":"Volume Mappings (-v)"},{"location":"images/docker-cops/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-cops/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-cops/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-cops/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-cops/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-cops/#support-info","text":"Shell access whilst the container is running: docker exec -it cops /bin/bash To monitor the logs of the container in realtime: docker logs -f cops Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cops Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cops:latest","title":"Support Info"},{"location":"images/docker-cops/#versions","text":"20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.11.20: - Pin composer version to 1.10.17. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 27.02.19: - Upgrade packages during install to prevent mismatch with baseimage. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Add multiarch and pipeline logic. 21.08.18: - Rebase to alpine 3.8. 02.07.18: - Add php7-ctype dependency. 08.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.04.17: - Add composer packages, reduce layers. 02.04.17: - Updated to version 1.1.0. 05.02.17: - Updated to Alpine 3.5 & PHP7. 24.10.16: - Updated to implement user based config. 24.10.16: - Updated to version 1.0.1. 14.10.16: - Add version layer information. 28.09.16: - Add php5-zlib. 11.09.16: - Add layer badges to README. 29.08.16: - Add php5-opcache. 28.08.16: - Add badges to README. 12.08.16: - Initial Release.","title":"Versions"},{"location":"images/docker-couchpotato/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr linuxserver/couchpotato Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Application Setup Access the webui at :5050 , for more information check out CouchPotato . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : couchpotato : image : lscr.io/linuxserver/couchpotato container_name : couchpotato environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads - /path/to/movies:/movies ports : - 5050:5050 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = couchpotato \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 5050 :5050 \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/movies:/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/couchpotato Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5050 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Couchpotato Application Data. /downloads Downloads Folder. /movies Movie Share. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it couchpotato /bin/bash To monitor the logs of the container in realtime: docker logs -f couchpotato Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' couchpotato Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/couchpotato Versions 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 10.06.19: - Add back unrar & unzip that were accidentally left out during rebase. 06.06.19: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Multi-arch builds. 16.08.18: - Rebase to alpine 3.8. 06.11.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable. 12.07.17: - Add inspect commands to README, move to jenkins build and push 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5. 11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder). 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 12.11.15: - Misc Code Cleanup. 02.10.15: - Change to python baseimage. 28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.","title":"couchpotato"},{"location":"images/docker-couchpotato/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr","title":"DEPRECATION NOTICE"},{"location":"images/docker-couchpotato/#linuxservercouchpotato","text":"Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory.","title":"linuxserver/couchpotato"},{"location":"images/docker-couchpotato/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-couchpotato/#application-setup","text":"Access the webui at :5050 , for more information check out CouchPotato .","title":"Application Setup"},{"location":"images/docker-couchpotato/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-couchpotato/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : couchpotato : image : lscr.io/linuxserver/couchpotato container_name : couchpotato environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads - /path/to/movies:/movies ports : - 5050:5050 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-couchpotato/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = couchpotato \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 5050 :5050 \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/movies:/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/couchpotato","title":"docker cli (click here for more info)"},{"location":"images/docker-couchpotato/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-couchpotato/#ports-p","text":"Parameter Function 5050 http gui","title":"Ports (-p)"},{"location":"images/docker-couchpotato/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-couchpotato/#volume-mappings-v","text":"Volume Function /config Couchpotato Application Data. /downloads Downloads Folder. /movies Movie Share.","title":"Volume Mappings (-v)"},{"location":"images/docker-couchpotato/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-couchpotato/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-couchpotato/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-couchpotato/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-couchpotato/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-couchpotato/#support-info","text":"Shell access whilst the container is running: docker exec -it couchpotato /bin/bash To monitor the logs of the container in realtime: docker logs -f couchpotato Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' couchpotato Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/couchpotato","title":"Support Info"},{"location":"images/docker-couchpotato/#versions","text":"29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 10.06.19: - Add back unrar & unzip that were accidentally left out during rebase. 06.06.19: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Multi-arch builds. 16.08.18: - Rebase to alpine 3.8. 06.11.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable. 12.07.17: - Add inspect commands to README, move to jenkins build and push 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5. 11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder). 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 12.11.15: - Misc Code Cleanup. 02.10.15: - Change to python baseimage. 28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.","title":"Versions"},{"location":"images/docker-daapd/","text":"linuxserver/daapd Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Map your music folder, open up itunes on the same LAN to see your music there. The web interface is available at http://:3689 For further setup options of remotes etc, check out the daapd website, Owntone . Enable spotify connect server Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts): mkfifo /spotify The spotify connect server should show up as the 'forked-daapd' device in your Spotify application. It is recommended to set the pipe_autostart option to true in your forked-daapd config. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : daapd : image : lscr.io/linuxserver/daapd:latest container_name : daapd network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/music restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = daapd \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v :/config \\ -v :/music \\ --restart unless-stopped \\ lscr.io/linuxserver/daapd:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Networking ( --net ) Parameter Function --net=host Shares host networking with container. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where daapd server stores its config and dbase files. /music Map to your music folder. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it daapd /bin/bash To monitor the logs of the container in realtime: docker logs -f daapd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' daapd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/daapd:latest Versions 31.05.22: - Make sure the user has access to the audio device. 31.05.22: - Add new deps, flex and bison. 12.02.22: - Rebase to Alpine 3.15. 14.09.21: - Enabled librespot. Disabled spotify on ARMv7 10.07.21: - Change of paths to work with the new package name, OwnTone. 02.04.21: - Update upstream repo, again. 30.03.21: - Update upstream repo. 06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7. 01.06.20: - Rebasing to alpine 3.12. 16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.01.19: - Add pipeline logic and multi arch. 20.08.18: - Rebase to alpine linux 3.8. 09.06.18: - Use buildstage and update dependencies. 05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26. 25.02.18: - Query version before pull and build latest release. 03.01.18: - Deprecate cpu_core routine lack of scaling. 07.12.17: - Rebase to alpine linux 3.7. 03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes. 26.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 10.01.17: - Bump to 24.2. 14.10.16: - Add version layer information. 17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository. 28.02.16: - Add chromecast support, bump dependency versions. 04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. 17.12.15: - Add in spotify support. 25.11.15: - Initial Release.","title":"daapd"},{"location":"images/docker-daapd/#linuxserverdaapd","text":"Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.","title":"linuxserver/daapd"},{"location":"images/docker-daapd/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-daapd/#application-setup","text":"Map your music folder, open up itunes on the same LAN to see your music there. The web interface is available at http://:3689 For further setup options of remotes etc, check out the daapd website, Owntone .","title":"Application Setup"},{"location":"images/docker-daapd/#enable-spotify-connect-server","text":"Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts): mkfifo /spotify The spotify connect server should show up as the 'forked-daapd' device in your Spotify application. It is recommended to set the pipe_autostart option to true in your forked-daapd config.","title":"Enable spotify connect server"},{"location":"images/docker-daapd/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-daapd/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : daapd : image : lscr.io/linuxserver/daapd:latest container_name : daapd network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/music restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-daapd/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = daapd \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v :/config \\ -v :/music \\ --restart unless-stopped \\ lscr.io/linuxserver/daapd:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-daapd/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-daapd/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-daapd/#networking-net","text":"Parameter Function --net=host Shares host networking with container.","title":"Networking (--net)"},{"location":"images/docker-daapd/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-daapd/#volume-mappings-v","text":"Volume Function /config Where daapd server stores its config and dbase files. /music Map to your music folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-daapd/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-daapd/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-daapd/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-daapd/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-daapd/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-daapd/#support-info","text":"Shell access whilst the container is running: docker exec -it daapd /bin/bash To monitor the logs of the container in realtime: docker logs -f daapd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' daapd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/daapd:latest","title":"Support Info"},{"location":"images/docker-daapd/#versions","text":"31.05.22: - Make sure the user has access to the audio device. 31.05.22: - Add new deps, flex and bison. 12.02.22: - Rebase to Alpine 3.15. 14.09.21: - Enabled librespot. Disabled spotify on ARMv7 10.07.21: - Change of paths to work with the new package name, OwnTone. 02.04.21: - Update upstream repo, again. 30.03.21: - Update upstream repo. 06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7. 01.06.20: - Rebasing to alpine 3.12. 16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.01.19: - Add pipeline logic and multi arch. 20.08.18: - Rebase to alpine linux 3.8. 09.06.18: - Use buildstage and update dependencies. 05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26. 25.02.18: - Query version before pull and build latest release. 03.01.18: - Deprecate cpu_core routine lack of scaling. 07.12.17: - Rebase to alpine linux 3.7. 03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes. 26.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 10.01.17: - Bump to 24.2. 14.10.16: - Add version layer information. 17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository. 28.02.16: - Add chromecast support, bump dependency versions. 04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. 17.12.15: - Add in spotify support. 25.11.15: - Initial Release.","title":"Versions"},{"location":"images/docker-darktable/","text":"linuxserver/darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : darktable : image : lscr.io/linuxserver/darktable:latest container_name : darktable security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = darktable \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/darktable:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Darktable desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings and images Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it darktable /bin/bash To monitor the logs of the container in realtime: docker logs -f darktable Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' darktable Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/darktable:latest Versions 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 31.12.21: - Rebase to Alpine 3.15. 01.10.21: - Rebase to Alpine 3.14. 07.04.21: - Initial release.","title":"darktable"},{"location":"images/docker-darktable/#linuxserverdarktable","text":"darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.","title":"linuxserver/darktable"},{"location":"images/docker-darktable/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-darktable/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-darktable/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-darktable/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : darktable : image : lscr.io/linuxserver/darktable:latest container_name : darktable security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-darktable/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = darktable \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/darktable:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-darktable/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-darktable/#ports-p","text":"Parameter Function 3000 Darktable desktop gui.","title":"Ports (-p)"},{"location":"images/docker-darktable/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-darktable/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings and images","title":"Volume Mappings (-v)"},{"location":"images/docker-darktable/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-darktable/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-darktable/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-darktable/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-darktable/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-darktable/#support-info","text":"Shell access whilst the container is running: docker exec -it darktable /bin/bash To monitor the logs of the container in realtime: docker logs -f darktable Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' darktable Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/darktable:latest","title":"Support Info"},{"location":"images/docker-darktable/#versions","text":"23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 31.12.21: - Rebase to Alpine 3.15. 01.10.21: - Rebase to Alpine 3.14. 07.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-davos/","text":"linuxserver/davos Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : davos : image : lscr.io/linuxserver/davos:latest container_name : davos environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/download ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = davos \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -p 8080 :8080 \\ -v :/config \\ -v :/download \\ --restart unless-stopped \\ lscr.io/linuxserver/davos:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 This is the default port that davos runs under Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation Volume Mappings ( -v ) Volume Function /config davos's config location. This is where it stores its database file and logs. /download davos's file download location Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it davos /bin/bash To monitor the logs of the container in realtime: docker logs -f davos Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' davos Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/davos:latest Versions 15.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.03.19: - Updating runtime deps due to change in OpenJRE. 08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper. 22.02.19: - Rebasing to alpine 3.9. 18.11.16: - Initial Release.","title":"davos"},{"location":"images/docker-davos/#linuxserverdavos","text":"Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.","title":"linuxserver/davos"},{"location":"images/docker-davos/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-davos/#application-setup","text":"The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page .","title":"Application Setup"},{"location":"images/docker-davos/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-davos/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : davos : image : lscr.io/linuxserver/davos:latest container_name : davos environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/download ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-davos/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = davos \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -p 8080 :8080 \\ -v :/config \\ -v :/download \\ --restart unless-stopped \\ lscr.io/linuxserver/davos:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-davos/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-davos/#ports-p","text":"Parameter Function 8080 This is the default port that davos runs under","title":"Ports (-p)"},{"location":"images/docker-davos/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-davos/#volume-mappings-v","text":"Volume Function /config davos's config location. This is where it stores its database file and logs. /download davos's file download location","title":"Volume Mappings (-v)"},{"location":"images/docker-davos/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-davos/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-davos/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-davos/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-davos/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-davos/#support-info","text":"Shell access whilst the container is running: docker exec -it davos /bin/bash To monitor the logs of the container in realtime: docker logs -f davos Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' davos Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/davos:latest","title":"Support Info"},{"location":"images/docker-davos/#versions","text":"15.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.03.19: - Updating runtime deps due to change in OpenJRE. 08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper. 22.02.19: - Rebasing to alpine 3.9. 18.11.16: - Initial Release.","title":"Versions"},{"location":"images/docker-ddclient/","text":"linuxserver/ddclient Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Edit the ddclient.conf file found in your /config volume (also see official ddclient documentation ). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config. Get dynamic IP from Fritz.Box If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf : use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ddclient : image : lscr.io/linuxserver/ddclient:latest container_name : ddclient environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ddclient \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ddclient:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where ddclient should store its config files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ddclient /bin/bash To monitor the logs of the container in realtime: docker logs -f ddclient Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ddclient Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ddclient:latest Versions 20.10.22: - Update build instructions for 3.10.0. Update default ddclient.conf . 15.01.22: - Rebase to Alpine 3.15 15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo 08.03.21: - Added bind-tools to provide nsupdate 01.06.20: - Rebasing to alpine 3.12. 08.02.20: - Ingest from Github. 06.02.19: - Fix permissions. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Add perl-io-socket-inet6 for ipv6 support. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 22.08.18: - Rebase to alpine 3.8. 10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line server=www.cloudflare.com from your ddclient.conf . 07.12.17: - Rebase to alpine 3.7. 28.05.17: - Rebase to alpine 3.6. 10.02.17: - Rebase to alpine 3.5. 26.11.16: - Update README to new standard and add icon and other small details. 29.08.16: - Initial release.","title":"ddclient"},{"location":"images/docker-ddclient/#linuxserverddclient","text":"Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.","title":"linuxserver/ddclient"},{"location":"images/docker-ddclient/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ddclient/#application-setup","text":"Edit the ddclient.conf file found in your /config volume (also see official ddclient documentation ). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config.","title":"Application Setup"},{"location":"images/docker-ddclient/#get-dynamic-ip-from-fritzbox","text":"If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf : use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox","title":"Get dynamic IP from Fritz.Box"},{"location":"images/docker-ddclient/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ddclient/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ddclient : image : lscr.io/linuxserver/ddclient:latest container_name : ddclient environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ddclient/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ddclient \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ddclient:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-ddclient/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ddclient/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-ddclient/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-ddclient/#volume-mappings-v","text":"Volume Function /config Where ddclient should store its config files.","title":"Volume Mappings (-v)"},{"location":"images/docker-ddclient/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ddclient/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ddclient/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ddclient/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-ddclient/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ddclient/#support-info","text":"Shell access whilst the container is running: docker exec -it ddclient /bin/bash To monitor the logs of the container in realtime: docker logs -f ddclient Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ddclient Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ddclient:latest","title":"Support Info"},{"location":"images/docker-ddclient/#versions","text":"20.10.22: - Update build instructions for 3.10.0. Update default ddclient.conf . 15.01.22: - Rebase to Alpine 3.15 15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo 08.03.21: - Added bind-tools to provide nsupdate 01.06.20: - Rebasing to alpine 3.12. 08.02.20: - Ingest from Github. 06.02.19: - Fix permissions. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Add perl-io-socket-inet6 for ipv6 support. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 22.08.18: - Rebase to alpine 3.8. 10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line server=www.cloudflare.com from your ddclient.conf . 07.12.17: - Rebase to alpine 3.7. 28.05.17: - Rebase to alpine 3.6. 10.02.17: - Rebase to alpine 3.5. 26.11.16: - Update README to new standard and add icon and other small details. 29.08.16: - Initial release.","title":"Versions"},{"location":"images/docker-deluge/","text":"linuxserver/deluge Deluge is a lightweight, Free Software, cross-platform BitTorrent client. Full Encryption WebUI Plugin System Much more... Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge. To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password. Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : deluge : image : lscr.io/linuxserver/deluge:latest container_name : deluge environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DELUGE_LOGLEVEL=error #optional volumes : - /path/to/deluge/config:/config - /path/to/your/downloads:/downloads ports : - 8112:8112 - 6881:6881 - 6881:6881/udp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = deluge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DELUGE_LOGLEVEL = error ` #optional` \\ -p 8112 :8112 \\ -p 6881 :6881 \\ -p 6881 :6881/udp \\ -v /path/to/deluge/config:/config \\ -v /path/to/your/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/deluge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8112 Port for webui 6881 Inbound torrent traffic (See App Setup) 6881/udp Inbound torrent traffic (See App Setup) Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use DELUGE_LOGLEVEL=error set the loglevel output when running Deluge, default is info for deluged and warning for delgued-web Volume Mappings ( -v ) Volume Function /config deluge configs /downloads torrent download directory Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it deluge /bin/bash To monitor the logs of the container in realtime: docker logs -f deluge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' deluge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/deluge:latest Versions 29.11.22: - Restore geoip using py3-geoip as an interim measure. 24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2. 22.11.22: - Update GeoIP URL for new IPFS domain. 29.08.22: - Rebase to Alpine Edge again to follow latest releases. 12.08.22: - Bump unrar to 6.1.7. 16.06.22: - Rebase to Alpine 3.16 from edge. 22.02.22: - Rebase to Alpine, config on first startup, add GeoIP. 15.01.22: - Rebase to Focal. 07.06.21: - Remove host networking from readme examples 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 09.05.19: - Add python3 requests and future modules. 24.08.19: - Add ability to set LogLevel for Deluge. 09.06.19: - Update to 2.x using deluge ppa. 02.05.19: - Install full version of 7zip. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.11.18: - Add deluge-console. 11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic. 09.04.18: - update to libressl2.7-libssl. 29.03.18: - Rebase to alpine edge. 07.12.17: - Rebase to alpine 3.7. 20.11.17: - Change libressl2.6-libssl repo. 01.07.17: - Add curl package. 26.05.17: - Rebase to alpine 3.6. 29.04.17: - Add variable for user defined umask. 28.04.17: - update to libressl2.5-libssl. 28.12.16: - Rebase to alpine 3.5 baseimage. 17.11.16: - Rebase to edge baseimage. 13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 30.08.16: - Use pip packages for some critical dependencies. 28.08.16: - Add badges to README. 15.08.16: - Rebase to alpine linux. 09.11.15: - Add unrar and unzip 15.10.15: - Initial Release.","title":"deluge"},{"location":"images/docker-deluge/#linuxserverdeluge","text":"Deluge is a lightweight, Free Software, cross-platform BitTorrent client. Full Encryption WebUI Plugin System Much more...","title":"linuxserver/deluge"},{"location":"images/docker-deluge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-deluge/#application-setup","text":"The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge. To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password. Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used.","title":"Application Setup"},{"location":"images/docker-deluge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-deluge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : deluge : image : lscr.io/linuxserver/deluge:latest container_name : deluge environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DELUGE_LOGLEVEL=error #optional volumes : - /path/to/deluge/config:/config - /path/to/your/downloads:/downloads ports : - 8112:8112 - 6881:6881 - 6881:6881/udp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-deluge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = deluge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DELUGE_LOGLEVEL = error ` #optional` \\ -p 8112 :8112 \\ -p 6881 :6881 \\ -p 6881 :6881/udp \\ -v /path/to/deluge/config:/config \\ -v /path/to/your/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/deluge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-deluge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-deluge/#ports-p","text":"Parameter Function 8112 Port for webui 6881 Inbound torrent traffic (See App Setup) 6881/udp Inbound torrent traffic (See App Setup)","title":"Ports (-p)"},{"location":"images/docker-deluge/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use DELUGE_LOGLEVEL=error set the loglevel output when running Deluge, default is info for deluged and warning for delgued-web","title":"Environment Variables (-e)"},{"location":"images/docker-deluge/#volume-mappings-v","text":"Volume Function /config deluge configs /downloads torrent download directory","title":"Volume Mappings (-v)"},{"location":"images/docker-deluge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-deluge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-deluge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-deluge/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-deluge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-deluge/#support-info","text":"Shell access whilst the container is running: docker exec -it deluge /bin/bash To monitor the logs of the container in realtime: docker logs -f deluge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' deluge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/deluge:latest","title":"Support Info"},{"location":"images/docker-deluge/#versions","text":"29.11.22: - Restore geoip using py3-geoip as an interim measure. 24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2. 22.11.22: - Update GeoIP URL for new IPFS domain. 29.08.22: - Rebase to Alpine Edge again to follow latest releases. 12.08.22: - Bump unrar to 6.1.7. 16.06.22: - Rebase to Alpine 3.16 from edge. 22.02.22: - Rebase to Alpine, config on first startup, add GeoIP. 15.01.22: - Rebase to Focal. 07.06.21: - Remove host networking from readme examples 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 09.05.19: - Add python3 requests and future modules. 24.08.19: - Add ability to set LogLevel for Deluge. 09.06.19: - Update to 2.x using deluge ppa. 02.05.19: - Install full version of 7zip. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.11.18: - Add deluge-console. 11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic. 09.04.18: - update to libressl2.7-libssl. 29.03.18: - Rebase to alpine edge. 07.12.17: - Rebase to alpine 3.7. 20.11.17: - Change libressl2.6-libssl repo. 01.07.17: - Add curl package. 26.05.17: - Rebase to alpine 3.6. 29.04.17: - Add variable for user defined umask. 28.04.17: - update to libressl2.5-libssl. 28.12.16: - Rebase to alpine 3.5 baseimage. 17.11.16: - Rebase to edge baseimage. 13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 30.08.16: - Use pip packages for some critical dependencies. 28.08.16: - Add badges to README. 15.08.16: - Rebase to alpine linux. 09.11.15: - Add unrar and unzip 15.10.15: - Initial Release.","title":"Versions"},{"location":"images/docker-digikam/","text":"linuxserver/digikam digiKam : Professional Photo Management with the Power of Open Source Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false . Mysql Internal When using mysql internal mode for the database you will need to click on \"Find\" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open. Keyboard Layouts This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : digikam : image : lscr.io/linuxserver/digikam:latest container_name : digikam network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = digikam \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 ` #optional` \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/digikam:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 digiKam desktop gui Networking ( --net ) Parameter Function --net=host Use Host Networking Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores database. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it digikam /bin/bash To monitor the logs of the container in realtime: docker logs -f digikam Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' digikam Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/digikam:latest Versions 21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward. 20.10.22: - Migrate to s6v3. 07.03.22: - Add Exiftool and firefox for image exports. 20.02.22: - Add MariaDB, expand documentation. 15.02.22: - Rebase to Arch. 27.12.21: - Rebase to focal to resolve dependency issues. 27.03.21: - Download link fixed. 20.05.20: - Initial release.","title":"digikam"},{"location":"images/docker-digikam/#linuxserverdigikam","text":"digiKam : Professional Photo Management with the Power of Open Source","title":"linuxserver/digikam"},{"location":"images/docker-digikam/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-digikam/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false .","title":"Application Setup"},{"location":"images/docker-digikam/#mysql-internal","text":"When using mysql internal mode for the database you will need to click on \"Find\" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open.","title":"Mysql Internal"},{"location":"images/docker-digikam/#keyboard-layouts","text":"This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard","title":"Keyboard Layouts"},{"location":"images/docker-digikam/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-digikam/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : digikam : image : lscr.io/linuxserver/digikam:latest container_name : digikam network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-digikam/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = digikam \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 ` #optional` \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/digikam:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-digikam/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-digikam/#ports-p","text":"Parameter Function 3000 digiKam desktop gui","title":"Ports (-p)"},{"location":"images/docker-digikam/#networking-net","text":"Parameter Function --net=host Use Host Networking","title":"Networking (--net)"},{"location":"images/docker-digikam/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.","title":"Environment Variables (-e)"},{"location":"images/docker-digikam/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores database.","title":"Volume Mappings (-v)"},{"location":"images/docker-digikam/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-digikam/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-digikam/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-digikam/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-digikam/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-digikam/#support-info","text":"Shell access whilst the container is running: docker exec -it digikam /bin/bash To monitor the logs of the container in realtime: docker logs -f digikam Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' digikam Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/digikam:latest","title":"Support Info"},{"location":"images/docker-digikam/#versions","text":"21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward. 20.10.22: - Migrate to s6v3. 07.03.22: - Add Exiftool and firefox for image exports. 20.02.22: - Add MariaDB, expand documentation. 15.02.22: - Rebase to Arch. 27.12.21: - Rebase to focal to resolve dependency issues. 27.03.21: - Download link fixed. 20.05.20: - Initial release.","title":"Versions"},{"location":"images/docker-dillinger/","text":"linuxserver/dillinger Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : dillinger : image : lscr.io/linuxserver/dillinger:latest container_name : dillinger environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = dillinger \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/dillinger:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 The port for the Dillinger web interface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Dillinger plugin config files Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it dillinger /bin/bash To monitor the logs of the container in realtime: docker logs -f dillinger Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest Versions 19.04.22: - Rebase to Alpine. 31.05.19: - Initial Release.","title":"dillinger"},{"location":"images/docker-dillinger/#linuxserverdillinger","text":"Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.","title":"linuxserver/dillinger"},{"location":"images/docker-dillinger/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-dillinger/#application-setup","text":"Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.","title":"Application Setup"},{"location":"images/docker-dillinger/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : dillinger : image : lscr.io/linuxserver/dillinger:latest container_name : dillinger environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-dillinger/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = dillinger \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/dillinger:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-dillinger/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-dillinger/#ports-p","text":"Parameter Function 8080 The port for the Dillinger web interface","title":"Ports (-p)"},{"location":"images/docker-dillinger/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-dillinger/#volume-mappings-v","text":"Volume Function /config Dillinger plugin config files","title":"Volume Mappings (-v)"},{"location":"images/docker-dillinger/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-dillinger/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-dillinger/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-dillinger/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-dillinger/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-dillinger/#support-info","text":"Shell access whilst the container is running: docker exec -it dillinger /bin/bash To monitor the logs of the container in realtime: docker logs -f dillinger Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest","title":"Support Info"},{"location":"images/docker-dillinger/#versions","text":"19.04.22: - Rebase to Alpine. 31.05.19: - Initial Release.","title":"Versions"},{"location":"images/docker-diskover/","text":"linuxserver/diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information. The default username is diskover with the password of darkdata , access the container at http:/// . The UI may be unusable until a valid index has been created. The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = elasticsearch * const ES_PORT = 9200 The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data . Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode: docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the background docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the foreground Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) version : '2' services : diskover : image : lscr.io/linuxserver/diskover container_name : diskover environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - ES_HOST=elasticsearch - ES_PORT=9200 volumes : - /path/to/diskover/config:/config - /path/to/diskover/data:/data ports : - 80:80 mem_limit : 4096m restart : unless-stopped depends_on : - elasticsearch elasticsearch : container_name : elasticsearch image : docker.elastic.co/elasticsearch/elasticsearch:7.10.2 environment : - discovery.type=single-node - xpack.security.enabled=true - bootstrap.memory_lock=true - \"ES_JAVA_OPTS=-Xms1g -Xmx1g\" ulimits : memlock : soft : -1 hard : -1 volumes : - /path/to/esdata:/usr/share/elasticsearch/data ports : - 9200:9200 depends_on : - elasticsearch-helper restart : unless-stopped elasticsearch-helper : image : alpine command : sh -c \"sysctl -w vm.max_map_count=262144\" privileged : true docker cli ( click here for more info ) docker run -d \\ --name = diskover \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e ES_HOST = elasticsearch \\ -e ES_PORT = 9200 \\ -e ES_USER = elastic \\ -e ES_PASS = changeme \\ -p 80 :80 \\ -v /path/to/diskover/config:/config \\ -v /path/to/diskover/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/diskover:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 diskover Web UI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York ES_HOST=elasticsearch ElasticSearch host (optional) ES_PORT=9200 ElasticSearch port (optional) ES_USER=elastic ElasticSearch username (optional) ES_PASS=changeme ElasticSearch password (optional) Volume Mappings ( -v ) Volume Function /config Persistent config files /data Default mount point to crawl Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it diskover /bin/bash To monitor the logs of the container in realtime: docker logs -f diskover Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' diskover Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/diskover:latest Versions 25.02.22: - Add php7-sqlite3 to support rc4 release. 03.11.21: - Added more support for potential config files. 31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover 11.10.21: - Updated to diskover-community v2. 19.11.20: - Fix pip packages. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.11.18: - Initial Release.","title":"diskover"},{"location":"images/docker-diskover/#linuxserverdiskover","text":"diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.","title":"linuxserver/diskover"},{"location":"images/docker-diskover/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-diskover/#application-setup","text":"This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information. The default username is diskover with the password of darkdata , access the container at http:/// . The UI may be unusable until a valid index has been created. The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = elasticsearch * const ES_PORT = 9200 The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data . Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode: docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the background docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the foreground","title":"Application Setup"},{"location":"images/docker-diskover/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-diskover/#docker-compose-recommended-click-here-for-more-info","text":"version : '2' services : diskover : image : lscr.io/linuxserver/diskover container_name : diskover environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - ES_HOST=elasticsearch - ES_PORT=9200 volumes : - /path/to/diskover/config:/config - /path/to/diskover/data:/data ports : - 80:80 mem_limit : 4096m restart : unless-stopped depends_on : - elasticsearch elasticsearch : container_name : elasticsearch image : docker.elastic.co/elasticsearch/elasticsearch:7.10.2 environment : - discovery.type=single-node - xpack.security.enabled=true - bootstrap.memory_lock=true - \"ES_JAVA_OPTS=-Xms1g -Xmx1g\" ulimits : memlock : soft : -1 hard : -1 volumes : - /path/to/esdata:/usr/share/elasticsearch/data ports : - 9200:9200 depends_on : - elasticsearch-helper restart : unless-stopped elasticsearch-helper : image : alpine command : sh -c \"sysctl -w vm.max_map_count=262144\" privileged : true","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-diskover/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = diskover \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e ES_HOST = elasticsearch \\ -e ES_PORT = 9200 \\ -e ES_USER = elastic \\ -e ES_PASS = changeme \\ -p 80 :80 \\ -v /path/to/diskover/config:/config \\ -v /path/to/diskover/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/diskover:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-diskover/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-diskover/#ports-p","text":"Parameter Function 80 diskover Web UI","title":"Ports (-p)"},{"location":"images/docker-diskover/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York ES_HOST=elasticsearch ElasticSearch host (optional) ES_PORT=9200 ElasticSearch port (optional) ES_USER=elastic ElasticSearch username (optional) ES_PASS=changeme ElasticSearch password (optional)","title":"Environment Variables (-e)"},{"location":"images/docker-diskover/#volume-mappings-v","text":"Volume Function /config Persistent config files /data Default mount point to crawl","title":"Volume Mappings (-v)"},{"location":"images/docker-diskover/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-diskover/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-diskover/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-diskover/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-diskover/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-diskover/#support-info","text":"Shell access whilst the container is running: docker exec -it diskover /bin/bash To monitor the logs of the container in realtime: docker logs -f diskover Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' diskover Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/diskover:latest","title":"Support Info"},{"location":"images/docker-diskover/#versions","text":"25.02.22: - Add php7-sqlite3 to support rc4 release. 03.11.21: - Added more support for potential config files. 31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover 11.10.21: - Updated to diskover-community v2. 19.11.20: - Fix pip packages. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.11.18: - Initial Release.","title":"Versions"},{"location":"images/docker-doc-builder/","text":"linuxserver/doc-builder Expects to run as part of the LSIO CI process. Not for public consumption. **Running against remote: ** docker run --rm \\ -e CONTAINER_NAME=${CONTAINER_NAME} \\ -v ${TEMPDIR}:/ansible/readme \\ linuxserver/doc-builder:latest **Running locally: ** If you need to test functionality just navigate to the folder with the readme-vars.yml and run: docker run --rm \\ -v $(pwd):/tmp \\ -e LOCAL=true \\ linuxserver/doc-builder:latest The output will be in a GENERATED.md in your current working directory. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"linuxserver/doc-builder"},{"location":"images/docker-doc-builder/#linuxserverdoc-builder","text":"Expects to run as part of the LSIO CI process. Not for public consumption. **Running against remote: ** docker run --rm \\ -e CONTAINER_NAME=${CONTAINER_NAME} \\ -v ${TEMPDIR}:/ansible/readme \\ linuxserver/doc-builder:latest **Running locally: ** If you need to test functionality just navigate to the folder with the readme-vars.yml and run: docker run --rm \\ -v $(pwd):/tmp \\ -e LOCAL=true \\ linuxserver/doc-builder:latest The output will be in a GENERATED.md in your current working directory. The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"linuxserver/doc-builder"},{"location":"images/docker-docker-compose/","text":"The LinuxServer.io team brings you another container release featuring: regular and timely application updates easy user mappings (PGID, PUID) custom base image with s6 overlay weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth regular security updates Find us at: Blog - all the things you can do with our containers including How-To guides, opinions and much more! Discord - realtime support / chat with the community and the team. Discourse - post on our community forum. Fleet - an online web interface which displays all of our maintained images. GitHub - view the source for all of our repositories. Open Collective - please consider helping us by either donating or contributing to our budget linuxserver/docker-compose docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 docker-compose v1 releases alpine \u2705 docker-compose v1 releases with our alpine baseimage v2 \u2705 docker compose v2 releases Usage Docker cli docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ lscr.io/linuxserver/docker-compose:latest \\ up You can replace the last line with any docker-compose command and argument, which will be passed to docker-compose inside the image. Recommended method We provide a very convenient script that allows the docker-compose container to run as if it was installed natively: sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose Running these two commands on your docker host once will let you issue commands such as docker-compose up -d and the docker-compose container will do its job behind the scenes. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it docker-compose /bin/bash To monitor the logs of the container in realtime: docker logs -f docker-compose container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' docker-compose image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/docker-compose:latest Updating Info Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers: Via Docker Run Update the image: docker pull lscr.io/linuxserver/docker-compose:latest You can also remove the old dangling images: docker image prune Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-docker-compose.git cd docker-docker-compose docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/docker-compose:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions 15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15. 17.12.20: - Update run.sh with formatting changes. 04.10.20: - Update run.sh with changes from upstream. 31.08.20: - Update tox and virtualenv. 31.07.20: - Add support for global env var DOCKER_COMPOSE_IMAGE_TAG in the run.sh script. 06.07.20: - Publish docker-compose and docker-cli binaries in Github releases. 01.07.20: - Release alpine based images at alpine tag. 04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version. 19.05.20: - Initial Release.","title":"docker-compose"},{"location":"images/docker-docker-compose/#linuxserverdocker-compose","text":"docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.","title":"linuxserver/docker-compose"},{"location":"images/docker-docker-compose/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-docker-compose/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 docker-compose v1 releases alpine \u2705 docker-compose v1 releases with our alpine baseimage v2 \u2705 docker compose v2 releases","title":"Version Tags"},{"location":"images/docker-docker-compose/#usage","text":"","title":"Usage"},{"location":"images/docker-docker-compose/#docker-cli","text":"docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ lscr.io/linuxserver/docker-compose:latest \\ up You can replace the last line with any docker-compose command and argument, which will be passed to docker-compose inside the image.","title":"Docker cli"},{"location":"images/docker-docker-compose/#recommended-method","text":"We provide a very convenient script that allows the docker-compose container to run as if it was installed natively: sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose Running these two commands on your docker host once will let you issue commands such as docker-compose up -d and the docker-compose container will do its job behind the scenes.","title":"Recommended method"},{"location":"images/docker-docker-compose/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-docker-compose/#support-info","text":"Shell access whilst the container is running: docker exec -it docker-compose /bin/bash To monitor the logs of the container in realtime: docker logs -f docker-compose container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' docker-compose image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/docker-compose:latest","title":"Support Info"},{"location":"images/docker-docker-compose/#updating-info","text":"Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers:","title":"Updating Info"},{"location":"images/docker-docker-compose/#via-docker-run","text":"Update the image: docker pull lscr.io/linuxserver/docker-compose:latest You can also remove the old dangling images: docker image prune","title":"Via Docker Run"},{"location":"images/docker-docker-compose/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-docker-compose.git cd docker-docker-compose docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/docker-compose:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-docker-compose/#versions","text":"15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15. 17.12.20: - Update run.sh with formatting changes. 04.10.20: - Update run.sh with changes from upstream. 31.08.20: - Update tox and virtualenv. 31.07.20: - Add support for global env var DOCKER_COMPOSE_IMAGE_TAG in the run.sh script. 06.07.20: - Publish docker-compose and docker-cli binaries in Github releases. 01.07.20: - Release alpine based images at alpine tag. 04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version. 19.05.20: - Initial Release.","title":"Versions"},{"location":"images/docker-dokuwiki/","text":"linuxserver/dokuwiki Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set \"Use nice URLs\" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/ , for more info see Dokuwiki Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : dokuwiki : image : lscr.io/linuxserver/dokuwiki:latest container_name : dokuwiki environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = dokuwiki \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/dokuwiki:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Application HTTP Port 443 #optional Application HTTPS Port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it dokuwiki /bin/bash To monitor the logs of the container in realtime: docker logs -f dokuwiki Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dokuwiki Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dokuwiki:latest Versions 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3. 11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template. 15.04.21: - Add vendor folder to deny list. 21.02.21: - Store search index outside of container, set absolute (default) path for savedir . 23.01.21: - Rebasing to alpine 3.13. 28.09.20: - Add php7-pdo_sqlite and php7-sqlite3. 23.09.20: - Fix php-local.ini bug introduced in the prior PR. 14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons. 19.12.19: - Rebasing to alpine 3.11. 01.12.19: - Add php7-ldap package to support LDAP authentication. 28.05.19: - Initial Release.","title":"dokuwiki"},{"location":"images/docker-dokuwiki/#linuxserverdokuwiki","text":"Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.","title":"linuxserver/dokuwiki"},{"location":"images/docker-dokuwiki/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-dokuwiki/#application-setup","text":"Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set \"Use nice URLs\" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/ , for more info see Dokuwiki","title":"Application Setup"},{"location":"images/docker-dokuwiki/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-dokuwiki/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : dokuwiki : image : lscr.io/linuxserver/dokuwiki:latest container_name : dokuwiki environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-dokuwiki/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = dokuwiki \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/dokuwiki:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-dokuwiki/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-dokuwiki/#ports-p","text":"Parameter Function 80 Application HTTP Port 443 #optional Application HTTPS Port","title":"Ports (-p)"},{"location":"images/docker-dokuwiki/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-dokuwiki/#volume-mappings-v","text":"Volume Function /config Configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-dokuwiki/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-dokuwiki/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-dokuwiki/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-dokuwiki/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-dokuwiki/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-dokuwiki/#support-info","text":"Shell access whilst the container is running: docker exec -it dokuwiki /bin/bash To monitor the logs of the container in realtime: docker logs -f dokuwiki Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dokuwiki Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dokuwiki:latest","title":"Support Info"},{"location":"images/docker-dokuwiki/#versions","text":"28.12.22: - Rebase to Alpine 3.17, migrate to s6v3. 11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template. 15.04.21: - Add vendor folder to deny list. 21.02.21: - Store search index outside of container, set absolute (default) path for savedir . 23.01.21: - Rebasing to alpine 3.13. 28.09.20: - Add php7-pdo_sqlite and php7-sqlite3. 23.09.20: - Fix php-local.ini bug introduced in the prior PR. 14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons. 19.12.19: - Rebasing to alpine 3.11. 01.12.19: - Add php7-ldap package to support LDAP authentication. 28.05.19: - Initial Release.","title":"Versions"},{"location":"images/docker-domoticz/","text":"linuxserver/domoticz Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : domoticz : image : lscr.io/linuxserver/domoticz:latest container_name : domoticz environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - WEBROOT=domoticz #optional - DBASE= #optional volumes : - :/config ports : - 8080:8080 - 6144:6144 - 1443:1443 devices : - path to device:path to device restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = domoticz \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e WEBROOT = domoticz ` #optional` \\ -e DBASE = ` #optional` \\ -p 8080 :8080 \\ -p 6144 :6144 \\ -p 1443 :1443 \\ -v :/config \\ --device path to device:path to device \\ --restart unless-stopped \\ lscr.io/linuxserver/domoticz:latest Passing Through USB Devices To get full use of Domoticz, you probably have a USB device you want to pass through. To figure out which device to pass through, you have to connect the device and look in dmesg for the device node created. Issue the command 'dmesg | tail' after you connected your device and you should see something like below. usb 1-1.2: new full-speed USB device number 7 using ehci-pci ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected usb 1-1.2: Detected FT232RL usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 As you can see above, the device node created is ttyUSB0. It does not say where, but it's almost always in /dev/. The correct tag for passing through this USB device is '--device /dev/ttyUSB0:/dev/ttyUSB0' Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 WebUI 6144 Domoticz communication port. 1443 Domoticz communication port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. WEBROOT=domoticz Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying. DBASE= Sets path to database. Do not set unless you know what this does. Volume Mappings ( -v ) Volume Function /config Where Domoticz stores config files and data. Device Mappings ( --device ) Parameter Function path to device For passing through USB devices. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it domoticz /bin/bash To monitor the logs of the container in realtime: docker logs -f domoticz Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' domoticz Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/domoticz:latest Versions 15.10.22: - Remove deprecated legacy stable branches. 05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path. 26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf. 24.11.19: - Change to using domoticz builtin Lua and MQTT. 03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo. 28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons. 12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9. 30.03.19: - Add env variable to set webroot. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 19.02.19: - Fix branch for version logic. 11.02.19: - Add pipeline logic and multi arch. 02.07.18: - Add openssh package. 01.07.18: - Fix backup/restore in webgui. 03.04.18: - Add dependencies for BroadlinkRM2 plugin. 20.01.18: - Move telldus core to repo to prevent build fail when source site goes down. 18.01.18: - Remove logging to syslog in the run command to prevent double logging. 04.01.18: - Deprecate cpu_core routine lack of scaling. 08.12.17: - Rebase to alpine 3.7. 26.11.17: - Use cpu core counting routine to speed up build time. 28.05.17: - Rebase to alpine 3.6. 26.02.17: - Add curl and replace openssl with libressl. 11.02.17: - Update README. 03.01.17: - Initial Release.","title":"domoticz"},{"location":"images/docker-domoticz/#linuxserverdomoticz","text":"Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.","title":"linuxserver/domoticz"},{"location":"images/docker-domoticz/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-domoticz/#application-setup","text":"To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com","title":"Application Setup"},{"location":"images/docker-domoticz/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-domoticz/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : domoticz : image : lscr.io/linuxserver/domoticz:latest container_name : domoticz environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - WEBROOT=domoticz #optional - DBASE= #optional volumes : - :/config ports : - 8080:8080 - 6144:6144 - 1443:1443 devices : - path to device:path to device restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-domoticz/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = domoticz \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e WEBROOT = domoticz ` #optional` \\ -e DBASE = ` #optional` \\ -p 8080 :8080 \\ -p 6144 :6144 \\ -p 1443 :1443 \\ -v :/config \\ --device path to device:path to device \\ --restart unless-stopped \\ lscr.io/linuxserver/domoticz:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-domoticz/#passing-through-usb-devices","text":"To get full use of Domoticz, you probably have a USB device you want to pass through. To figure out which device to pass through, you have to connect the device and look in dmesg for the device node created. Issue the command 'dmesg | tail' after you connected your device and you should see something like below. usb 1-1.2: new full-speed USB device number 7 using ehci-pci ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected usb 1-1.2: Detected FT232RL usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 As you can see above, the device node created is ttyUSB0. It does not say where, but it's almost always in /dev/. The correct tag for passing through this USB device is '--device /dev/ttyUSB0:/dev/ttyUSB0'","title":"Passing Through USB Devices"},{"location":"images/docker-domoticz/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-domoticz/#ports-p","text":"Parameter Function 8080 WebUI 6144 Domoticz communication port. 1443 Domoticz communication port.","title":"Ports (-p)"},{"location":"images/docker-domoticz/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. WEBROOT=domoticz Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying. DBASE= Sets path to database. Do not set unless you know what this does.","title":"Environment Variables (-e)"},{"location":"images/docker-domoticz/#volume-mappings-v","text":"Volume Function /config Where Domoticz stores config files and data.","title":"Volume Mappings (-v)"},{"location":"images/docker-domoticz/#device-mappings-device","text":"Parameter Function path to device For passing through USB devices.","title":"Device Mappings (--device)"},{"location":"images/docker-domoticz/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-domoticz/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-domoticz/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-domoticz/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-domoticz/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-domoticz/#support-info","text":"Shell access whilst the container is running: docker exec -it domoticz /bin/bash To monitor the logs of the container in realtime: docker logs -f domoticz Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' domoticz Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/domoticz:latest","title":"Support Info"},{"location":"images/docker-domoticz/#versions","text":"15.10.22: - Remove deprecated legacy stable branches. 05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path. 26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf. 24.11.19: - Change to using domoticz builtin Lua and MQTT. 03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo. 28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons. 12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9. 30.03.19: - Add env variable to set webroot. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 19.02.19: - Fix branch for version logic. 11.02.19: - Add pipeline logic and multi arch. 02.07.18: - Add openssh package. 01.07.18: - Fix backup/restore in webgui. 03.04.18: - Add dependencies for BroadlinkRM2 plugin. 20.01.18: - Move telldus core to repo to prevent build fail when source site goes down. 18.01.18: - Remove logging to syslog in the run command to prevent double logging. 04.01.18: - Deprecate cpu_core routine lack of scaling. 08.12.17: - Rebase to alpine 3.7. 26.11.17: - Use cpu core counting routine to speed up build time. 28.05.17: - Rebase to alpine 3.6. 26.02.17: - Add curl and replace openssl with libressl. 11.02.17: - Update README. 03.01.17: - Initial Release.","title":"Versions"},{"location":"images/docker-doplarr/","text":"linuxserver/doplarr Doplarr is an *arr request bot for Discord.\" Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup Start by following the Discord setup instructions from Doplarr's readme. NOTE: The DISCORD__TOKEN environment variable is required to run the container! If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank. If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank. Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . Review and adjust any Optional Settings from Doplarr's readme. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : doplarr : image : lscr.io/linuxserver/doplarr:latest container_name : doplarr environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - DISCORD__TOKEN= - OVERSEERR__API= - OVERSEERR__URL=http://localhost:5055 - RADARR__API= - RADARR__URL=http://localhost:7878 - SONARR__API= - SONARR__URL=http://localhost:8989 - DISCORD__MAX_RESULTS=25 #optional - DISCORD__REQUESTED_MSG_STYLE=:plain #optional - SONARR__QUALITY_PROFILE= #optional - RADARR__QUALITY_PROFILE= #optional - SONARR__ROOTFOLDER= #optional - RADARR__ROOTFOLDER= #optional - SONARR__LANGUAGE_PROFILE= #optional - OVERSEERR__DEFAULT_ID= #optional - PARTIAL_SEASONS=true #optional - LOG_LEVEL=:info #optional - JAVA_OPTS= #optional volumes : - /path/to/appdata/config:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = doplarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e DISCORD__TOKEN = \\ -e OVERSEERR__API = \\ -e OVERSEERR__URL = http://localhost:5055 \\ -e RADARR__API = \\ -e RADARR__URL = http://localhost:7878 \\ -e SONARR__API = \\ -e SONARR__URL = http://localhost:8989 \\ -e DISCORD__MAX_RESULTS = 25 ` #optional` \\ -e DISCORD__REQUESTED_MSG_STYLE = :plain ` #optional` \\ -e SONARR__QUALITY_PROFILE = ` #optional` \\ -e RADARR__QUALITY_PROFILE = ` #optional` \\ -e SONARR__ROOTFOLDER = ` #optional` \\ -e RADARR__ROOTFOLDER = ` #optional` \\ -e SONARR__LANGUAGE_PROFILE = ` #optional` \\ -e OVERSEERR__DEFAULT_ID = ` #optional` \\ -e PARTIAL_SEASONS = true ` #optional` \\ -e LOG_LEVEL = :info ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/doplarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York DISCORD__TOKEN= Specify your discord bot token. OVERSEERR__API= Specify your Overseerr API key. Leave blank if using Radarr/Sonarr. OVERSEERR__URL=http://localhost:5055 Specify your Overseerr URL. Leave blank if using Radarr/Sonarr. RADARR__API= Specify your Radarr API key. Leave blank if using Overseerr. RADARR__URL=http://localhost:7878 Specify your Radarr URL. Leave blank if using Overseerr. SONARR__API= Specify your Sonarr API key. Leave blank if using Overseerr. SONARR__URL=http://localhost:8989 Specify your Sonarr URL. Leave blank if using Overseerr. DISCORD__MAX_RESULTS=25 Sets the maximum size of the search results selection DISCORD__REQUESTED_MSG_STYLE=:plain Sets the style of the request alert message. One of :plain :embed :none SONARR__QUALITY_PROFILE= The name of the quality profile to use by default for Sonarr RADARR__QUALITY_PROFILE= The name of the quality profile to use by default for Radarr SONARR__ROOTFOLDER= The root folder to use by default for Sonarr RADARR__ROOTFOLDER= The root folder to use by default for Radarr SONARR__LANGUAGE_PROFILE= The name of the language profile to use by default for Sonarr OVERSEERR__DEFAULT_ID= The Overseerr user id to use by default if there is no associated discord account for the requester PARTIAL_SEASONS=true Sets whether users can request partial seasons. LOG_LEVEL=:info The log level for the logging backend. This can be changed for debugging purposes. One of trace :debug :info :warn :error :fatal :report JAVA_OPTS= For passing additional java options. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it doplarr /bin/bash To monitor the logs of the container in realtime: docker logs -f doplarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doplarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doplarr:latest Versions 18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17. 01.05.22: - Remove DISCORD__ROLE_ID environment variable, see Permissions Configuration . 30.01.22: - Variable adjustments. 30.01.22: - Initial Release.","title":"doplarr"},{"location":"images/docker-doplarr/#linuxserverdoplarr","text":"Doplarr is an *arr request bot for Discord.\"","title":"linuxserver/doplarr"},{"location":"images/docker-doplarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-doplarr/#application-setup","text":"Start by following the Discord setup instructions from Doplarr's readme. NOTE: The DISCORD__TOKEN environment variable is required to run the container! If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank. If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank. Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\" . Review and adjust any Optional Settings from Doplarr's readme.","title":"Application Setup"},{"location":"images/docker-doplarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-doplarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : doplarr : image : lscr.io/linuxserver/doplarr:latest container_name : doplarr environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - DISCORD__TOKEN= - OVERSEERR__API= - OVERSEERR__URL=http://localhost:5055 - RADARR__API= - RADARR__URL=http://localhost:7878 - SONARR__API= - SONARR__URL=http://localhost:8989 - DISCORD__MAX_RESULTS=25 #optional - DISCORD__REQUESTED_MSG_STYLE=:plain #optional - SONARR__QUALITY_PROFILE= #optional - RADARR__QUALITY_PROFILE= #optional - SONARR__ROOTFOLDER= #optional - RADARR__ROOTFOLDER= #optional - SONARR__LANGUAGE_PROFILE= #optional - OVERSEERR__DEFAULT_ID= #optional - PARTIAL_SEASONS=true #optional - LOG_LEVEL=:info #optional - JAVA_OPTS= #optional volumes : - /path/to/appdata/config:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-doplarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = doplarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e DISCORD__TOKEN = \\ -e OVERSEERR__API = \\ -e OVERSEERR__URL = http://localhost:5055 \\ -e RADARR__API = \\ -e RADARR__URL = http://localhost:7878 \\ -e SONARR__API = \\ -e SONARR__URL = http://localhost:8989 \\ -e DISCORD__MAX_RESULTS = 25 ` #optional` \\ -e DISCORD__REQUESTED_MSG_STYLE = :plain ` #optional` \\ -e SONARR__QUALITY_PROFILE = ` #optional` \\ -e RADARR__QUALITY_PROFILE = ` #optional` \\ -e SONARR__ROOTFOLDER = ` #optional` \\ -e RADARR__ROOTFOLDER = ` #optional` \\ -e SONARR__LANGUAGE_PROFILE = ` #optional` \\ -e OVERSEERR__DEFAULT_ID = ` #optional` \\ -e PARTIAL_SEASONS = true ` #optional` \\ -e LOG_LEVEL = :info ` #optional` \\ -e JAVA_OPTS = ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/doplarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-doplarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-doplarr/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-doplarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York DISCORD__TOKEN= Specify your discord bot token. OVERSEERR__API= Specify your Overseerr API key. Leave blank if using Radarr/Sonarr. OVERSEERR__URL=http://localhost:5055 Specify your Overseerr URL. Leave blank if using Radarr/Sonarr. RADARR__API= Specify your Radarr API key. Leave blank if using Overseerr. RADARR__URL=http://localhost:7878 Specify your Radarr URL. Leave blank if using Overseerr. SONARR__API= Specify your Sonarr API key. Leave blank if using Overseerr. SONARR__URL=http://localhost:8989 Specify your Sonarr URL. Leave blank if using Overseerr. DISCORD__MAX_RESULTS=25 Sets the maximum size of the search results selection DISCORD__REQUESTED_MSG_STYLE=:plain Sets the style of the request alert message. One of :plain :embed :none SONARR__QUALITY_PROFILE= The name of the quality profile to use by default for Sonarr RADARR__QUALITY_PROFILE= The name of the quality profile to use by default for Radarr SONARR__ROOTFOLDER= The root folder to use by default for Sonarr RADARR__ROOTFOLDER= The root folder to use by default for Radarr SONARR__LANGUAGE_PROFILE= The name of the language profile to use by default for Sonarr OVERSEERR__DEFAULT_ID= The Overseerr user id to use by default if there is no associated discord account for the requester PARTIAL_SEASONS=true Sets whether users can request partial seasons. LOG_LEVEL=:info The log level for the logging backend. This can be changed for debugging purposes. One of trace :debug :info :warn :error :fatal :report JAVA_OPTS= For passing additional java options.","title":"Environment Variables (-e)"},{"location":"images/docker-doplarr/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-doplarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-doplarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-doplarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-doplarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-doplarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-doplarr/#support-info","text":"Shell access whilst the container is running: docker exec -it doplarr /bin/bash To monitor the logs of the container in realtime: docker logs -f doplarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doplarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doplarr:latest","title":"Support Info"},{"location":"images/docker-doplarr/#versions","text":"18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17. 01.05.22: - Remove DISCORD__ROLE_ID environment variable, see Permissions Configuration . 30.01.22: - Variable adjustments. 30.01.22: - Initial Release.","title":"Versions"},{"location":"images/docker-doublecommander/","text":"linuxserver/doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : doublecommander : image : lscr.io/linuxserver/doublecommander:latest container_name : doublecommander environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = doublecommander \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/doublecommander:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Double Commander desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings. /data Host data directories, mount as many as needed. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it doublecommander /bin/bash To monitor the logs of the container in realtime: docker logs -f doublecommander Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doublecommander Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doublecommander:latest Versions 16.09.22: - Migrate to s6v3. 15.02.21: - Rebase to Ubuntu Jammy. 14.12.21: - Rebase to Ubuntu focal. 25.03.20: - Initial release.","title":"doublecommander"},{"location":"images/docker-doublecommander/#linuxserverdoublecommander","text":"Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.","title":"linuxserver/doublecommander"},{"location":"images/docker-doublecommander/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-doublecommander/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-doublecommander/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-doublecommander/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : doublecommander : image : lscr.io/linuxserver/doublecommander:latest container_name : doublecommander environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-doublecommander/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = doublecommander \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/doublecommander:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-doublecommander/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-doublecommander/#ports-p","text":"Parameter Function 3000 Double Commander desktop gui.","title":"Ports (-p)"},{"location":"images/docker-doublecommander/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-doublecommander/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings. /data Host data directories, mount as many as needed.","title":"Volume Mappings (-v)"},{"location":"images/docker-doublecommander/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-doublecommander/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-doublecommander/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-doublecommander/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-doublecommander/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-doublecommander/#support-info","text":"Shell access whilst the container is running: docker exec -it doublecommander /bin/bash To monitor the logs of the container in realtime: docker logs -f doublecommander Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doublecommander Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doublecommander:latest","title":"Support Info"},{"location":"images/docker-doublecommander/#versions","text":"16.09.22: - Migrate to s6v3. 15.02.21: - Rebase to Ubuntu Jammy. 14.12.21: - Rebase to Ubuntu focal. 25.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-duckdns/","text":"linuxserver/duckdns Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Go to the duckdns website , register your subdomain(s) and retrieve your token Create a container with your subdomain(s) and token It will update your IP with the DuckDNS service every 5 minutes (with a random jitter) Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : duckdns : image : lscr.io/linuxserver/duckdns:latest container_name : duckdns environment : - PUID=1000 #optional - PGID=1000 #optional - TZ=Europe/London - SUBDOMAINS=subdomain1,subdomain2 - TOKEN=token - LOG_FILE=false #optional volumes : - /path/to/appdata/config:/config #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = duckdns \\ -e PUID = 1000 ` #optional` \\ -e PGID = 1000 ` #optional` \\ -e TZ = Europe/London \\ -e SUBDOMAINS = subdomain1,subdomain2 \\ -e TOKEN = token \\ -e LOG_FILE = false ` #optional` \\ -v /path/to/appdata/config:/config ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/duckdns:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces TOKEN=token DuckDNS token LOG_FILE=false Set to true to log to file (also need to map /config). Volume Mappings ( -v ) Volume Function /config Used in conjunction with logging to file. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it duckdns /bin/bash To monitor the logs of the container in realtime: docker logs -f duckdns Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duckdns Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duckdns:latest Versions 23.09.22: - Rebase to alpine 3.16 and s6v3. 19.09.22: - Rebase to alpine 3.15. 17.05.22: - Don't allow insecure connections and add timeout. 17.05.22: - Add random jitter to update time. 23.02.22: - Append to log file instead of overwriting every time. 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 13.04.20: - Add donation links for DuckDNS. 19.12.19: - Rebasing to alpine 3.11. 24.09.19: - Fix perms on github and remove chmod that can stall the container. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 08.02.19: - Update readme with optional parameters. 10.12.18: - Fix docker compose example. 15.10.18: - Multi-arch image. 22.08.18: - Rebase to alpine 3.8. 08.12.17: - Rebase to alpine 3.7. 28.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 17.11.16: - Initial release.","title":"duckdns"},{"location":"images/docker-duckdns/#linuxserverduckdns","text":"Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.","title":"linuxserver/duckdns"},{"location":"images/docker-duckdns/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-duckdns/#application-setup","text":"Go to the duckdns website , register your subdomain(s) and retrieve your token Create a container with your subdomain(s) and token It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)","title":"Application Setup"},{"location":"images/docker-duckdns/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-duckdns/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : duckdns : image : lscr.io/linuxserver/duckdns:latest container_name : duckdns environment : - PUID=1000 #optional - PGID=1000 #optional - TZ=Europe/London - SUBDOMAINS=subdomain1,subdomain2 - TOKEN=token - LOG_FILE=false #optional volumes : - /path/to/appdata/config:/config #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-duckdns/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = duckdns \\ -e PUID = 1000 ` #optional` \\ -e PGID = 1000 ` #optional` \\ -e TZ = Europe/London \\ -e SUBDOMAINS = subdomain1,subdomain2 \\ -e TOKEN = token \\ -e LOG_FILE = false ` #optional` \\ -v /path/to/appdata/config:/config ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/duckdns:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-duckdns/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-duckdns/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-duckdns/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces TOKEN=token DuckDNS token LOG_FILE=false Set to true to log to file (also need to map /config).","title":"Environment Variables (-e)"},{"location":"images/docker-duckdns/#volume-mappings-v","text":"Volume Function /config Used in conjunction with logging to file.","title":"Volume Mappings (-v)"},{"location":"images/docker-duckdns/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-duckdns/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-duckdns/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-duckdns/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-duckdns/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-duckdns/#support-info","text":"Shell access whilst the container is running: docker exec -it duckdns /bin/bash To monitor the logs of the container in realtime: docker logs -f duckdns Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duckdns Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duckdns:latest","title":"Support Info"},{"location":"images/docker-duckdns/#versions","text":"23.09.22: - Rebase to alpine 3.16 and s6v3. 19.09.22: - Rebase to alpine 3.15. 17.05.22: - Don't allow insecure connections and add timeout. 17.05.22: - Add random jitter to update time. 23.02.22: - Append to log file instead of overwriting every time. 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 13.04.20: - Add donation links for DuckDNS. 19.12.19: - Rebasing to alpine 3.11. 24.09.19: - Fix perms on github and remove chmod that can stall the container. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 08.02.19: - Update readme with optional parameters. 10.12.18: - Fix docker compose example. 15.10.18: - Multi-arch image. 22.08.18: - Rebase to alpine 3.8. 08.12.17: - Rebase to alpine 3.7. 28.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 17.11.16: - Initial release.","title":"Versions"},{"location":"images/docker-duplicati/","text":"linuxserver/duplicati Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Beta releases of Duplicati development \u2705 Canary releases of Duplicati Application Setup The webui is at :8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : duplicati : image : lscr.io/linuxserver/duplicati:latest container_name : duplicati environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CLI_ARGS= #optional volumes : - :/config - :/backups - :/source ports : - 8200:8200 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = duplicati \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CLI_ARGS = ` #optional` \\ -p 8200 :8200 \\ -v :/config \\ -v :/backups \\ -v :/source \\ --restart unless-stopped \\ lscr.io/linuxserver/duplicati:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8200 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CLI_ARGS= Optionally specify any CLI variables you want to launch the app with Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /backups Path to store local backups. /source Path to source for files to backup. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it duplicati /bin/bash To monitor the logs of the container in realtime: docker logs -f duplicati Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duplicati Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duplicati:latest Versions 03.08.22: - Deprecate armhf. 25.04.22: - Rebase to mono:focal. 01.08.19: - Rebase to Linuxserver LTS mono version. 16.07.19: - Allow for additional command line arguments in an environment variable. 28.06.19: - Rebase to bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 28.02.19: - Allow access from all hostnames, clarify info on image tags. 13.01.19: - Use jq instead of awk in dockerfiles. 11.01.19: - Multi-arch image. 09.12.17: - Fix continuation lines. 31.08.17: - Build only beta or release versions (thanks deasmi). 24.04.17: - Initial release.","title":"duplicati"},{"location":"images/docker-duplicati/#linuxserverduplicati","text":"Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.","title":"linuxserver/duplicati"},{"location":"images/docker-duplicati/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-duplicati/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Beta releases of Duplicati development \u2705 Canary releases of Duplicati","title":"Version Tags"},{"location":"images/docker-duplicati/#application-setup","text":"The webui is at :8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati .","title":"Application Setup"},{"location":"images/docker-duplicati/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-duplicati/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : duplicati : image : lscr.io/linuxserver/duplicati:latest container_name : duplicati environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CLI_ARGS= #optional volumes : - :/config - :/backups - :/source ports : - 8200:8200 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-duplicati/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = duplicati \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CLI_ARGS = ` #optional` \\ -p 8200 :8200 \\ -v :/config \\ -v :/backups \\ -v :/source \\ --restart unless-stopped \\ lscr.io/linuxserver/duplicati:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-duplicati/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-duplicati/#ports-p","text":"Parameter Function 8200 http gui","title":"Ports (-p)"},{"location":"images/docker-duplicati/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CLI_ARGS= Optionally specify any CLI variables you want to launch the app with","title":"Environment Variables (-e)"},{"location":"images/docker-duplicati/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /backups Path to store local backups. /source Path to source for files to backup.","title":"Volume Mappings (-v)"},{"location":"images/docker-duplicati/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-duplicati/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-duplicati/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-duplicati/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-duplicati/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-duplicati/#support-info","text":"Shell access whilst the container is running: docker exec -it duplicati /bin/bash To monitor the logs of the container in realtime: docker logs -f duplicati Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duplicati Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duplicati:latest","title":"Support Info"},{"location":"images/docker-duplicati/#versions","text":"03.08.22: - Deprecate armhf. 25.04.22: - Rebase to mono:focal. 01.08.19: - Rebase to Linuxserver LTS mono version. 16.07.19: - Allow for additional command line arguments in an environment variable. 28.06.19: - Rebase to bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 28.02.19: - Allow access from all hostnames, clarify info on image tags. 13.01.19: - Use jq instead of awk in dockerfiles. 11.01.19: - Multi-arch image. 09.12.17: - Fix continuation lines. 31.08.17: - Build only beta or release versions (thanks deasmi). 24.04.17: - Initial release.","title":"Versions"},{"location":"images/docker-emby/","text":"linuxserver/emby Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable emby releases beta \u2705 Beta emby releases Application Setup Webui can be found at http://:8096 Emby has very complete and verbose documentation located here . Hardware acceleration users for Intel Quicksync and AMD VAAPI will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the emby docker. OpenMAX (Raspberry Pi) Hardware acceleration users for Raspberry Pi OpenMAX will need to mount their /dev/vchiq video device inside of the container and their system OpenMax libs by passing the following options when running or creating the container: --device=/dev/vchiq:/dev/vchiq -v /opt/vc/lib:/opt/vc/lib V4L2 (Raspberry Pi) Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container: --device=/dev/video10:/dev/video10 --device=/dev/video11:/dev/video11 --device=/dev/video12:/dev/video12 Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : emby : image : lscr.io/linuxserver/emby:latest container_name : emby environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/library:/config - /path/to/tvshows:/data/tvshows - /path/to/movies:/data/movies - /opt/vc/lib:/opt/vc/lib #optional ports : - 8096:8096 - 8920:8920 #optional devices : - /dev/dri:/dev/dri #optional - /dev/vchiq:/dev/vchiq #optional - /dev/video10:/dev/video10 #optional - /dev/video11:/dev/video11 #optional - /dev/video12:/dev/video12 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = emby \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8096 :8096 \\ -p 8920 :8920 ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvshows:/data/tvshows \\ -v /path/to/movies:/data/movies \\ -v /opt/vc/lib:/opt/vc/lib ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --device /dev/vchiq:/dev/vchiq ` #optional` \\ --device /dev/video10:/dev/video10 ` #optional` \\ --device /dev/video11:/dev/video11 ` #optional` \\ --device /dev/video12:/dev/video12 ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/emby:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8096 Http webUI. 8920 Https webUI (you need to setup your own certificate). Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Emby data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /opt/vc/lib Path for Raspberry Pi OpenMAX libs optional . Device Mappings ( --device ) Parameter Function /dev/dri Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi). /dev/vchiq Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio). /dev/video10 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video11 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video12 Only needed if you want to use your Raspberry Pi V4L2 video encoding. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it emby /bin/bash To monitor the logs of the container in realtime: docker logs -f emby Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emby Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emby:latest Versions 26.09.22: - Update chown behavior. 18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy. 19.05.21: - Structural changes upstream. 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode. 21.12.20: - Rebase to Focal, see here for troubleshooting armhf. 03.11.20: - Fix issue with missing samba folder. 13.11.20: - Fix issue with samba and ffmpeg. 03.07.20: - Add support for amd vaapi hw transcode. 29.02.20: - Add v4l2 support on Raspberry Pi. 26.02.20: - Add openmax support on Raspberry Pi. 15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates). 02.10.19: - Improve permission fixing for render and dvb devices. 13.08.19: - Add umask environment variable. 24.06.19: - Fix typos in readme. 30.05.19: - Initial release.","title":"emby"},{"location":"images/docker-emby/#linuxserveremby","text":"Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.","title":"linuxserver/emby"},{"location":"images/docker-emby/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-emby/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable emby releases beta \u2705 Beta emby releases","title":"Version Tags"},{"location":"images/docker-emby/#application-setup","text":"Webui can be found at http://:8096 Emby has very complete and verbose documentation located here . Hardware acceleration users for Intel Quicksync and AMD VAAPI will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the emby docker.","title":"Application Setup"},{"location":"images/docker-emby/#openmax-raspberry-pi","text":"Hardware acceleration users for Raspberry Pi OpenMAX will need to mount their /dev/vchiq video device inside of the container and their system OpenMax libs by passing the following options when running or creating the container: --device=/dev/vchiq:/dev/vchiq -v /opt/vc/lib:/opt/vc/lib","title":"OpenMAX (Raspberry Pi)"},{"location":"images/docker-emby/#v4l2-raspberry-pi","text":"Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container: --device=/dev/video10:/dev/video10 --device=/dev/video11:/dev/video11 --device=/dev/video12:/dev/video12","title":"V4L2 (Raspberry Pi)"},{"location":"images/docker-emby/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-emby/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : emby : image : lscr.io/linuxserver/emby:latest container_name : emby environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/library:/config - /path/to/tvshows:/data/tvshows - /path/to/movies:/data/movies - /opt/vc/lib:/opt/vc/lib #optional ports : - 8096:8096 - 8920:8920 #optional devices : - /dev/dri:/dev/dri #optional - /dev/vchiq:/dev/vchiq #optional - /dev/video10:/dev/video10 #optional - /dev/video11:/dev/video11 #optional - /dev/video12:/dev/video12 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-emby/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = emby \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8096 :8096 \\ -p 8920 :8920 ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvshows:/data/tvshows \\ -v /path/to/movies:/data/movies \\ -v /opt/vc/lib:/opt/vc/lib ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --device /dev/vchiq:/dev/vchiq ` #optional` \\ --device /dev/video10:/dev/video10 ` #optional` \\ --device /dev/video11:/dev/video11 ` #optional` \\ --device /dev/video12:/dev/video12 ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/emby:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-emby/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-emby/#ports-p","text":"Parameter Function 8096 Http webUI. 8920 Https webUI (you need to setup your own certificate).","title":"Ports (-p)"},{"location":"images/docker-emby/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-emby/#volume-mappings-v","text":"Volume Function /config Emby data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /opt/vc/lib Path for Raspberry Pi OpenMAX libs optional .","title":"Volume Mappings (-v)"},{"location":"images/docker-emby/#device-mappings-device","text":"Parameter Function /dev/dri Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi). /dev/vchiq Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio). /dev/video10 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video11 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video12 Only needed if you want to use your Raspberry Pi V4L2 video encoding.","title":"Device Mappings (--device)"},{"location":"images/docker-emby/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-emby/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-emby/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-emby/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-emby/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-emby/#support-info","text":"Shell access whilst the container is running: docker exec -it emby /bin/bash To monitor the logs of the container in realtime: docker logs -f emby Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emby Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emby:latest","title":"Support Info"},{"location":"images/docker-emby/#versions","text":"26.09.22: - Update chown behavior. 18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy. 19.05.21: - Structural changes upstream. 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode. 21.12.20: - Rebase to Focal, see here for troubleshooting armhf. 03.11.20: - Fix issue with missing samba folder. 13.11.20: - Fix issue with samba and ffmpeg. 03.07.20: - Add support for amd vaapi hw transcode. 29.02.20: - Add v4l2 support on Raspberry Pi. 26.02.20: - Add openmax support on Raspberry Pi. 15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates). 02.10.19: - Improve permission fixing for render and dvb devices. 13.08.19: - Add umask environment variable. 24.06.19: - Fix typos in readme. 30.05.19: - Initial release.","title":"Versions"},{"location":"images/docker-embystat/","text":"linuxserver/embystat Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at :6555 . Follow the setup wizard on initial install. Then configure the required services. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : embystat : image : lscr.io/linuxserver/embystat:latest container_name : embystat environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 6555:6555 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = embystat \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6555 :6555 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/embystat:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 6555 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it embystat /bin/bash To monitor the logs of the container in realtime: docker logs -f embystat Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' embystat Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/embystat:latest Versions 11.06.22: - Rebase to focal, update disable updates flag. 08.04.20: - Structural changes for beta18. 04.12.19: - Disable in app updates. 12.11.19: - Multi-arch builds. 10.09.19: - Initial Release.","title":"embystat"},{"location":"images/docker-embystat/#linuxserverembystat","text":"Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.","title":"linuxserver/embystat"},{"location":"images/docker-embystat/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-embystat/#application-setup","text":"Access the webui at :6555 . Follow the setup wizard on initial install. Then configure the required services.","title":"Application Setup"},{"location":"images/docker-embystat/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-embystat/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : embystat : image : lscr.io/linuxserver/embystat:latest container_name : embystat environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 6555:6555 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-embystat/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = embystat \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6555 :6555 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/embystat:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-embystat/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-embystat/#ports-p","text":"Parameter Function 6555 web gui","title":"Ports (-p)"},{"location":"images/docker-embystat/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-embystat/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-embystat/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-embystat/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-embystat/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-embystat/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-embystat/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-embystat/#support-info","text":"Shell access whilst the container is running: docker exec -it embystat /bin/bash To monitor the logs of the container in realtime: docker logs -f embystat Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' embystat Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/embystat:latest","title":"Support Info"},{"location":"images/docker-embystat/#versions","text":"11.06.22: - Rebase to focal, update disable updates flag. 08.04.20: - Structural changes for beta18. 04.12.19: - Disable in app updates. 12.11.19: - Multi-arch builds. 10.09.19: - Initial Release.","title":"Versions"},{"location":"images/docker-emulatorjs/","text":"linuxserver/emulatorjs Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The Backend can be accessed at: http://yourhost:3000/ The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80. The frontend application has been initially optimized around being used with a standard gamepad (more specifically for modern Xbox consoles that have chromium based Edge browsers). The navigation revolves around the up/down/left/right keys to browse the menus and launch games. Mobile browsers will function, just keep in mind compatibility will be reduced especially for CD based games. It is important to note that some of the current emulators used for this frontend are obfuscated code, efforts are being made to reverse engineer it but you should know it can potentially reach out to third party services if you manually enable features like netplay (this should never happen in a stock setup). The point of this message is that on top of the de-obfuscation effort there is also effort to stop using binary blobs and shift to built from source libretro emscripten blobs, for now this web based emulation stack is the best for useability and compatibility. We are in the process to transitioning to libretro cores for emulators, currently 27/30 emulators have been replaced. For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a \"back\" action in the browser. (official name \"view button\" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name \"menu button\" the three lines) You will be unable to use features like save states and modify controller layouts on the emulatorjs based emulators currently as I have not determined a methodology of re-entering controller mode once you exit it. All normal game saves will function given you exit the game play screen cleanly using the B button for back this includes multi disc games for psx. Your game saves are stored in browser storage by hostname so if you make any changes to your local hosted setup (port or IP) the saves will not follow with it. For libretro based emulators you can use the button combination start+select+L+R to access the libretro menu and change settings/save or load/etc. We know about most of the oddities like crackling sound for some emulators, rendering issues, and games unreliably auto launching to fullscreen. In general full CD games on the Xbox web browser do not seem to work due to their size if you have a chd/pbp less than 450 megs it will run. Edge on Xbox has some kind of undocumented ram limitation of about a gigabyte. Until all emulators are transitioned to libretro cores the oddities of using self hosted EmulatorJS will not be something that can or should be solved using hacky workarounds interacting with obfuscated code. Just keep in mind these are full blown machine emulators running in Javascript in a browser, do not expect bare metal performance. Mounting in existing rom directories can be achieved by pointing to the default folder structure, IE lets say you would like to mount your NES library: -v /path/to/nes/roms:/data/nes/roms The folder names are: * 3do * arcade * atari2600 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : emulatorjs : image : lscr.io/linuxserver/emulatorjs:latest container_name : emulatorjs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 - 80:80 - 4001:4001 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = emulatorjs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -p 3000 :3000 \\ -p 80 :80 \\ -p 4001 :4001 ` #optional` \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/emulatorjs:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Rom/artwork management interface, used to generate/manage config files and download artwork 80 Emulation frontend containing static web files used to browse and launch games 4001 IPFS peering port, if you want to participate in the P2P network to distribute frontend artwork please forward this to the Internet Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder for reverse proxies IE '/FOLDER/' Volume Mappings ( -v ) Volume Function /config Path to store user profiles /data Path to store roms/artwork Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it emulatorjs /bin/bash To monitor the logs of the container in realtime: docker logs -f emulatorjs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emulatorjs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emulatorjs:latest Versions 24.11.22: - Update IPFS links for chdman. 04.04.22: - Ingest pre-built chdman bins during build time. 23.02.22: - Update ingestion point for emulatorjs bins. 25.01.22: - Allow users to mount in existing rom directories. 14.01.22: - Add profile paths and rebase to Alpine 3.15. 04.01.22: - Add headers needed for Threaded emulators. 29.11.21: - Add wasm mime type to NGINX. 26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores. 19.11.21: - Pin retroarch version. 14.11.21: - Update default cores to ingest. 23.10.21: - Initial release.","title":"emulatorjs"},{"location":"images/docker-emulatorjs/#linuxserveremulatorjs","text":"Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.","title":"linuxserver/emulatorjs"},{"location":"images/docker-emulatorjs/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-emulatorjs/#application-setup","text":"The Backend can be accessed at: http://yourhost:3000/ The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80. The frontend application has been initially optimized around being used with a standard gamepad (more specifically for modern Xbox consoles that have chromium based Edge browsers). The navigation revolves around the up/down/left/right keys to browse the menus and launch games. Mobile browsers will function, just keep in mind compatibility will be reduced especially for CD based games. It is important to note that some of the current emulators used for this frontend are obfuscated code, efforts are being made to reverse engineer it but you should know it can potentially reach out to third party services if you manually enable features like netplay (this should never happen in a stock setup). The point of this message is that on top of the de-obfuscation effort there is also effort to stop using binary blobs and shift to built from source libretro emscripten blobs, for now this web based emulation stack is the best for useability and compatibility. We are in the process to transitioning to libretro cores for emulators, currently 27/30 emulators have been replaced. For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a \"back\" action in the browser. (official name \"view button\" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name \"menu button\" the three lines) You will be unable to use features like save states and modify controller layouts on the emulatorjs based emulators currently as I have not determined a methodology of re-entering controller mode once you exit it. All normal game saves will function given you exit the game play screen cleanly using the B button for back this includes multi disc games for psx. Your game saves are stored in browser storage by hostname so if you make any changes to your local hosted setup (port or IP) the saves will not follow with it. For libretro based emulators you can use the button combination start+select+L+R to access the libretro menu and change settings/save or load/etc. We know about most of the oddities like crackling sound for some emulators, rendering issues, and games unreliably auto launching to fullscreen. In general full CD games on the Xbox web browser do not seem to work due to their size if you have a chd/pbp less than 450 megs it will run. Edge on Xbox has some kind of undocumented ram limitation of about a gigabyte. Until all emulators are transitioned to libretro cores the oddities of using self hosted EmulatorJS will not be something that can or should be solved using hacky workarounds interacting with obfuscated code. Just keep in mind these are full blown machine emulators running in Javascript in a browser, do not expect bare metal performance. Mounting in existing rom directories can be achieved by pointing to the default folder structure, IE lets say you would like to mount your NES library: -v /path/to/nes/roms:/data/nes/roms The folder names are: * 3do * arcade * atari2600 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws","title":"Application Setup"},{"location":"images/docker-emulatorjs/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-emulatorjs/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : emulatorjs : image : lscr.io/linuxserver/emulatorjs:latest container_name : emulatorjs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 - 80:80 - 4001:4001 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-emulatorjs/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = emulatorjs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -p 3000 :3000 \\ -p 80 :80 \\ -p 4001 :4001 ` #optional` \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/emulatorjs:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-emulatorjs/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-emulatorjs/#ports-p","text":"Parameter Function 3000 Rom/artwork management interface, used to generate/manage config files and download artwork 80 Emulation frontend containing static web files used to browse and launch games 4001 IPFS peering port, if you want to participate in the P2P network to distribute frontend artwork please forward this to the Internet","title":"Ports (-p)"},{"location":"images/docker-emulatorjs/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder for reverse proxies IE '/FOLDER/'","title":"Environment Variables (-e)"},{"location":"images/docker-emulatorjs/#volume-mappings-v","text":"Volume Function /config Path to store user profiles /data Path to store roms/artwork","title":"Volume Mappings (-v)"},{"location":"images/docker-emulatorjs/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-emulatorjs/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-emulatorjs/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-emulatorjs/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-emulatorjs/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-emulatorjs/#support-info","text":"Shell access whilst the container is running: docker exec -it emulatorjs /bin/bash To monitor the logs of the container in realtime: docker logs -f emulatorjs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emulatorjs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emulatorjs:latest","title":"Support Info"},{"location":"images/docker-emulatorjs/#versions","text":"24.11.22: - Update IPFS links for chdman. 04.04.22: - Ingest pre-built chdman bins during build time. 23.02.22: - Update ingestion point for emulatorjs bins. 25.01.22: - Allow users to mount in existing rom directories. 14.01.22: - Add profile paths and rebase to Alpine 3.15. 04.01.22: - Add headers needed for Threaded emulators. 29.11.21: - Add wasm mime type to NGINX. 26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores. 19.11.21: - Pin retroarch version. 14.11.21: - Update default cores to ingest. 23.10.21: - Initial release.","title":"Versions"},{"location":"images/docker-endlessh/","text":"linuxserver/endlessh Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config . The logs will be under /config/logs/endlessh . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : endlessh : image : lscr.io/linuxserver/endlessh:latest container_name : endlessh environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MSDELAY=10000 #optional - MAXLINES=32 #optional - MAXCLIENTS=4096 #optional - LOGFILE=false #optional - BINDFAMILY= #optional volumes : - /path/to/appdata:/config #optional ports : - 22:2222 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = endlessh \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MSDELAY = 10000 ` #optional` \\ -e MAXLINES = 32 ` #optional` \\ -e MAXCLIENTS = 4096 ` #optional` \\ -e LOGFILE = false ` #optional` \\ -e BINDFAMILY = ` #optional` \\ -p 22 :2222 \\ -v /path/to/appdata:/config ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/endlessh:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 2222 ssh port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. MAXLINES=32 The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes. MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. LOGFILE=false By default, the app logs to container log. If this is set to true , the log will be output to file under /config/logs/endlessh ( /config needs to be mapped). BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both. Volume Mappings ( -v ) Volume Function /config Required if LOGFILE is set to true . Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it endlessh /bin/bash To monitor the logs of the container in realtime: docker logs -f endlessh Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest Versions 23.09.22: - Migrate to s6v3. 20.07.22: - Rebase to Alpine 3.16. 16.04.22: - Rebase to Alpine 3.15. 07.10.21: - Fix typo on MAXLINES var. 08.06.21: - Add BINDFAMILY option. 16.04.21: - Initial Release.","title":"endlessh"},{"location":"images/docker-endlessh/#linuxserverendlessh","text":"Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.","title":"linuxserver/endlessh"},{"location":"images/docker-endlessh/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-endlessh/#application-setup","text":"The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config . The logs will be under /config/logs/endlessh .","title":"Application Setup"},{"location":"images/docker-endlessh/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : endlessh : image : lscr.io/linuxserver/endlessh:latest container_name : endlessh environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MSDELAY=10000 #optional - MAXLINES=32 #optional - MAXCLIENTS=4096 #optional - LOGFILE=false #optional - BINDFAMILY= #optional volumes : - /path/to/appdata:/config #optional ports : - 22:2222 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-endlessh/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = endlessh \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MSDELAY = 10000 ` #optional` \\ -e MAXLINES = 32 ` #optional` \\ -e MAXCLIENTS = 4096 ` #optional` \\ -e LOGFILE = false ` #optional` \\ -e BINDFAMILY = ` #optional` \\ -p 22 :2222 \\ -v /path/to/appdata:/config ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/endlessh:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-endlessh/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-endlessh/#ports-p","text":"Parameter Function 2222 ssh port","title":"Ports (-p)"},{"location":"images/docker-endlessh/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. MAXLINES=32 The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes. MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. LOGFILE=false By default, the app logs to container log. If this is set to true , the log will be output to file under /config/logs/endlessh ( /config needs to be mapped). BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both.","title":"Environment Variables (-e)"},{"location":"images/docker-endlessh/#volume-mappings-v","text":"Volume Function /config Required if LOGFILE is set to true .","title":"Volume Mappings (-v)"},{"location":"images/docker-endlessh/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-endlessh/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-endlessh/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-endlessh/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-endlessh/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-endlessh/#support-info","text":"Shell access whilst the container is running: docker exec -it endlessh /bin/bash To monitor the logs of the container in realtime: docker logs -f endlessh Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest","title":"Support Info"},{"location":"images/docker-endlessh/#versions","text":"23.09.22: - Migrate to s6v3. 20.07.22: - Rebase to Alpine 3.16. 16.04.22: - Rebase to Alpine 3.15. 07.10.21: - Fix typo on MAXLINES var. 08.06.21: - Add BINDFAMILY option. 16.04.21: - Initial Release.","title":"Versions"},{"location":"images/docker-fail2ban/","text":"linuxserver/fail2ban Fail2ban is a daemon to ban hosts that cause multiple authentication errors. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the chain to INPUT in the jail for that application. Configuration Files On first run, the container will create a number of folders and files in /config . The default configurations for fail2ban are all disabled by default. Please refer to the Configuration README , which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md . Remote Logs All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended. The /remotelogs path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath /remotelogs , ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : fail2ban : image : lscr.io/linuxserver/fail2ban:latest container_name : fail2ban cap_add : - NET_ADMIN - NET_RAW network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config - /var/log:/var/log:ro - /path/to/airsonic/log:/remotelogs/airsonic:ro #optional - /path/to/apache2/log:/remotelogs/apache2:ro #optional - /path/to/authelia/log:/remotelogs/authelia:ro #optional - /path/to/emby/log:/remotelogs/emby:ro #optional - /path/to/filebrowser/log:/remotelogs/filebrowser:ro #optional - /path/to/homeassistant/log:/remotelogs/homeassistant:ro #optional - /path/to/lighttpd/log:/remotelogs/lighttpd:ro #optional - /path/to/nextcloud/log:/remotelogs/nextcloud:ro #optional - /path/to/nginx/log:/remotelogs/nginx:ro #optional - /path/to/nzbget/log:/remotelogs/nzbget:ro #optional - /path/to/overseerr/log:/remotelogs/overseerr:ro #optional - /path/to/prowlarr/log:/remotelogs/prowlarr:ro #optional - /path/to/radarr/log:/remotelogs/radarr:ro #optional - /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro #optional - /path/to/sonarr/log:/remotelogs/sonarr:ro #optional - /path/to/unificontroller/log:/remotelogs/unificontroller:ro #optional - /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = fail2ban \\ --net = host \\ --cap-add = NET_ADMIN \\ --cap-add = NET_RAW \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -v /path/to/appdata/config:/config \\ -v /var/log:/var/log:ro \\ -v /path/to/airsonic/log:/remotelogs/airsonic:ro ` #optional` \\ -v /path/to/apache2/log:/remotelogs/apache2:ro ` #optional` \\ -v /path/to/authelia/log:/remotelogs/authelia:ro ` #optional` \\ -v /path/to/emby/log:/remotelogs/emby:ro ` #optional` \\ -v /path/to/filebrowser/log:/remotelogs/filebrowser:ro ` #optional` \\ -v /path/to/homeassistant/log:/remotelogs/homeassistant:ro ` #optional` \\ -v /path/to/lighttpd/log:/remotelogs/lighttpd:ro ` #optional` \\ -v /path/to/nextcloud/log:/remotelogs/nextcloud:ro ` #optional` \\ -v /path/to/nginx/log:/remotelogs/nginx:ro ` #optional` \\ -v /path/to/nzbget/log:/remotelogs/nzbget:ro ` #optional` \\ -v /path/to/overseerr/log:/remotelogs/overseerr:ro ` #optional` \\ -v /path/to/prowlarr/log:/remotelogs/prowlarr:ro ` #optional` \\ -v /path/to/radarr/log:/remotelogs/radarr:ro ` #optional` \\ -v /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro ` #optional` \\ -v /path/to/sonarr/log:/remotelogs/sonarr:ro ` #optional` \\ -v /path/to/unificontroller/log:/remotelogs/unificontroller:ro ` #optional` \\ -v /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/fail2ban:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Networking ( --net ) Parameter Function --net=host Shares host networking with container. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /var/log:ro Host logs. Mounted as Read Only. /remotelogs/airsonic:ro Optional path to airsonic log folder. Mounted as Read Only. /remotelogs/apache2:ro Optional path to apache2 log folder. Mounted as Read Only. /remotelogs/authelia:ro Optional path to authelia log folder. Mounted as Read Only. /remotelogs/emby:ro Optional path to emby log folder. Mounted as Read Only. /remotelogs/filebrowser:ro Optional path to filebrowser log folder. Mounted as Read Only. /remotelogs/homeassistant:ro Optional path to homeassistant log folder. Mounted as Read Only. /remotelogs/lighttpd:ro Optional path to lighttpd log folder. Mounted as Read Only. /remotelogs/nextcloud:ro Optional path to nextcloud log folder. Mounted as Read Only. /remotelogs/nginx:ro Optional path to nginx log folder. Mounted as Read Only. /remotelogs/nzbget:ro Optional path to nzbget log folder. Mounted as Read Only. /remotelogs/overseerr:ro Optional path to overseerr log folder. Mounted as Read Only. /remotelogs/prowlarr:ro Optional path to prowlarr log folder. Mounted as Read Only. /remotelogs/radarr:ro Optional path to radarr log folder. Mounted as Read Only. /remotelogs/sabnzbd:ro Optional path to sabnzbd log folder. Mounted as Read Only. /remotelogs/sonarr:ro Optional path to sonarr log folder. Mounted as Read Only. /remotelogs/unificontroller:ro Optional path to unificontroller log folder. Mounted as Read Only. /remotelogs/vaultwarden:ro Optional path to vaultwarden log folder. Mounted as Read Only. Miscellaneous Options Parameter Function Portainer notice {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it fail2ban /bin/bash To monitor the logs of the container in realtime: docker logs -f fail2ban Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fail2ban Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fail2ban:latest Versions 15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading. 25.08.22: - Update README to clarify remote log information. 09.08.22: - Initial Release.","title":"fail2ban"},{"location":"images/docker-fail2ban/#linuxserverfail2ban","text":"Fail2ban is a daemon to ban hosts that cause multiple authentication errors.","title":"linuxserver/fail2ban"},{"location":"images/docker-fail2ban/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-fail2ban/#application-setup","text":"This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the chain to INPUT in the jail for that application.","title":"Application Setup"},{"location":"images/docker-fail2ban/#configuration-files","text":"On first run, the container will create a number of folders and files in /config . The default configurations for fail2ban are all disabled by default. Please refer to the Configuration README , which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md .","title":"Configuration Files"},{"location":"images/docker-fail2ban/#remote-logs","text":"All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended. The /remotelogs path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath /remotelogs , ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container","title":"Remote Logs"},{"location":"images/docker-fail2ban/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-fail2ban/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : fail2ban : image : lscr.io/linuxserver/fail2ban:latest container_name : fail2ban cap_add : - NET_ADMIN - NET_RAW network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config - /var/log:/var/log:ro - /path/to/airsonic/log:/remotelogs/airsonic:ro #optional - /path/to/apache2/log:/remotelogs/apache2:ro #optional - /path/to/authelia/log:/remotelogs/authelia:ro #optional - /path/to/emby/log:/remotelogs/emby:ro #optional - /path/to/filebrowser/log:/remotelogs/filebrowser:ro #optional - /path/to/homeassistant/log:/remotelogs/homeassistant:ro #optional - /path/to/lighttpd/log:/remotelogs/lighttpd:ro #optional - /path/to/nextcloud/log:/remotelogs/nextcloud:ro #optional - /path/to/nginx/log:/remotelogs/nginx:ro #optional - /path/to/nzbget/log:/remotelogs/nzbget:ro #optional - /path/to/overseerr/log:/remotelogs/overseerr:ro #optional - /path/to/prowlarr/log:/remotelogs/prowlarr:ro #optional - /path/to/radarr/log:/remotelogs/radarr:ro #optional - /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro #optional - /path/to/sonarr/log:/remotelogs/sonarr:ro #optional - /path/to/unificontroller/log:/remotelogs/unificontroller:ro #optional - /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-fail2ban/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = fail2ban \\ --net = host \\ --cap-add = NET_ADMIN \\ --cap-add = NET_RAW \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -v /path/to/appdata/config:/config \\ -v /var/log:/var/log:ro \\ -v /path/to/airsonic/log:/remotelogs/airsonic:ro ` #optional` \\ -v /path/to/apache2/log:/remotelogs/apache2:ro ` #optional` \\ -v /path/to/authelia/log:/remotelogs/authelia:ro ` #optional` \\ -v /path/to/emby/log:/remotelogs/emby:ro ` #optional` \\ -v /path/to/filebrowser/log:/remotelogs/filebrowser:ro ` #optional` \\ -v /path/to/homeassistant/log:/remotelogs/homeassistant:ro ` #optional` \\ -v /path/to/lighttpd/log:/remotelogs/lighttpd:ro ` #optional` \\ -v /path/to/nextcloud/log:/remotelogs/nextcloud:ro ` #optional` \\ -v /path/to/nginx/log:/remotelogs/nginx:ro ` #optional` \\ -v /path/to/nzbget/log:/remotelogs/nzbget:ro ` #optional` \\ -v /path/to/overseerr/log:/remotelogs/overseerr:ro ` #optional` \\ -v /path/to/prowlarr/log:/remotelogs/prowlarr:ro ` #optional` \\ -v /path/to/radarr/log:/remotelogs/radarr:ro ` #optional` \\ -v /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro ` #optional` \\ -v /path/to/sonarr/log:/remotelogs/sonarr:ro ` #optional` \\ -v /path/to/unificontroller/log:/remotelogs/unificontroller:ro ` #optional` \\ -v /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/fail2ban:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-fail2ban/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-fail2ban/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-fail2ban/#networking-net","text":"Parameter Function --net=host Shares host networking with container.","title":"Networking (--net)"},{"location":"images/docker-fail2ban/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York","title":"Environment Variables (-e)"},{"location":"images/docker-fail2ban/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /var/log:ro Host logs. Mounted as Read Only. /remotelogs/airsonic:ro Optional path to airsonic log folder. Mounted as Read Only. /remotelogs/apache2:ro Optional path to apache2 log folder. Mounted as Read Only. /remotelogs/authelia:ro Optional path to authelia log folder. Mounted as Read Only. /remotelogs/emby:ro Optional path to emby log folder. Mounted as Read Only. /remotelogs/filebrowser:ro Optional path to filebrowser log folder. Mounted as Read Only. /remotelogs/homeassistant:ro Optional path to homeassistant log folder. Mounted as Read Only. /remotelogs/lighttpd:ro Optional path to lighttpd log folder. Mounted as Read Only. /remotelogs/nextcloud:ro Optional path to nextcloud log folder. Mounted as Read Only. /remotelogs/nginx:ro Optional path to nginx log folder. Mounted as Read Only. /remotelogs/nzbget:ro Optional path to nzbget log folder. Mounted as Read Only. /remotelogs/overseerr:ro Optional path to overseerr log folder. Mounted as Read Only. /remotelogs/prowlarr:ro Optional path to prowlarr log folder. Mounted as Read Only. /remotelogs/radarr:ro Optional path to radarr log folder. Mounted as Read Only. /remotelogs/sabnzbd:ro Optional path to sabnzbd log folder. Mounted as Read Only. /remotelogs/sonarr:ro Optional path to sonarr log folder. Mounted as Read Only. /remotelogs/unificontroller:ro Optional path to unificontroller log folder. Mounted as Read Only. /remotelogs/vaultwarden:ro Optional path to vaultwarden log folder. Mounted as Read Only.","title":"Volume Mappings (-v)"},{"location":"images/docker-fail2ban/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-fail2ban/#portainer-notice","text":"{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.","title":"Portainer notice"},{"location":"images/docker-fail2ban/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-fail2ban/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-fail2ban/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-fail2ban/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-fail2ban/#support-info","text":"Shell access whilst the container is running: docker exec -it fail2ban /bin/bash To monitor the logs of the container in realtime: docker logs -f fail2ban Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fail2ban Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fail2ban:latest","title":"Support Info"},{"location":"images/docker-fail2ban/#versions","text":"15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading. 25.08.22: - Update README to clarify remote log information. 09.08.22: - Initial Release.","title":"Versions"},{"location":"images/docker-feed2toot/","text":"linuxserver/feed2toot Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Run docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /usr/bin/register_feed2toot_app to generate credential files (be sure to set the correct volume path and PUID/PGID values). Edit the feed2toot.ini in /config to configure your instance name and RSS feeds. See the feed2toot docs for more information. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : feed2toot : image : lscr.io/linuxserver/feed2toot:latest container_name : feed2toot environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - FEED_LIMIT=5 #optional volumes : - /path/to/data:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = feed2toot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e FEED_LIMIT = 5 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/feed2toot:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. FEED_LIMIT=5 Limit number of RSS entries published at each execution. Volume Mappings ( -v ) Volume Function /config Local path for feed2toot config files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it feed2toot /bin/bash To monitor the logs of the container in realtime: docker logs -f feed2toot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' feed2toot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/feed2toot:latest Versions 22.12.22: - Rebase to alpine 3.17. 14.11.22: - Initial Release.","title":"feed2toot"},{"location":"images/docker-feed2toot/#linuxserverfeed2toot","text":"Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.","title":"linuxserver/feed2toot"},{"location":"images/docker-feed2toot/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-feed2toot/#application-setup","text":"Run docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /usr/bin/register_feed2toot_app to generate credential files (be sure to set the correct volume path and PUID/PGID values). Edit the feed2toot.ini in /config to configure your instance name and RSS feeds. See the feed2toot docs for more information.","title":"Application Setup"},{"location":"images/docker-feed2toot/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-feed2toot/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : feed2toot : image : lscr.io/linuxserver/feed2toot:latest container_name : feed2toot environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - FEED_LIMIT=5 #optional volumes : - /path/to/data:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-feed2toot/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = feed2toot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e FEED_LIMIT = 5 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/feed2toot:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-feed2toot/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-feed2toot/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-feed2toot/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. FEED_LIMIT=5 Limit number of RSS entries published at each execution.","title":"Environment Variables (-e)"},{"location":"images/docker-feed2toot/#volume-mappings-v","text":"Volume Function /config Local path for feed2toot config files.","title":"Volume Mappings (-v)"},{"location":"images/docker-feed2toot/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-feed2toot/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-feed2toot/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-feed2toot/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-feed2toot/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-feed2toot/#support-info","text":"Shell access whilst the container is running: docker exec -it feed2toot /bin/bash To monitor the logs of the container in realtime: docker logs -f feed2toot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' feed2toot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/feed2toot:latest","title":"Support Info"},{"location":"images/docker-feed2toot/#versions","text":"22.12.22: - Rebase to alpine 3.17. 14.11.22: - Initial Release.","title":"Versions"},{"location":"images/docker-ffmpeg/","text":"The LinuxServer.io team brings you another container release featuring :- regular and timely application updates easy user mappings (PGID, PUID) custom base image with s6 overlay weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth regular security updates Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * Podcast - on hiatus. Coming back soon (late 2018). * Open Collective - please consider helping us by either donating or contributing to our budget FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Usage Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory. If an input file is detected we will run FFmpeg as that user/group so the output file will match it's permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below. Basic Transcode docker run --rm -it \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -i /config/input.mkv \\ -c:v libx264 \\ -b:v 4M \\ -vf scale=1280:720 \\ -c:a copy \\ /config/output.mkv Hardware accelerated (VAAPI) docker run --rm -it \\ --device=/dev/dri:/dev/dri \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -vaapi_device /dev/dri/renderD128 \\ -i /config/input.mkv \\ -c:v h264_vaapi \\ -b:v 4M \\ -vf 'format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720' \\ -c:a copy \\ /config/output.mkv Nvidia Hardware accelerated docker run --rm -it \\ --runtime=nvidia \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -hwaccel nvdec \\ -i /config/input.mkv \\ -c:v h264_nvenc \\ -b:v 4M \\ -vf scale=1280:720 \\ -c:a copy \\ /config/output.mkv Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-ffmpeg.git cd docker-ffmpeg docker build \\ --no-cache \\ --pull \\ -t linuxserver/ffmpeg:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions 14.12.22: - Rebase to Jammy, bump to 5.1.2. 19.06.22: - Rebase to Focal. 26.08.21: - Add support for libOpenCL. 01.07.21: - Bump to 4.4. 17.06.20: - Bump to 4.3. 16.06.20: - Add support for libvmaf. 01.08.19: - Initial release.","title":"ffmpeg"},{"location":"images/docker-ffmpeg/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ffmpeg/#usage","text":"Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory. If an input file is detected we will run FFmpeg as that user/group so the output file will match it's permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below.","title":"Usage"},{"location":"images/docker-ffmpeg/#basic-transcode","text":"docker run --rm -it \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -i /config/input.mkv \\ -c:v libx264 \\ -b:v 4M \\ -vf scale=1280:720 \\ -c:a copy \\ /config/output.mkv","title":"Basic Transcode"},{"location":"images/docker-ffmpeg/#hardware-accelerated-vaapi","text":"docker run --rm -it \\ --device=/dev/dri:/dev/dri \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -vaapi_device /dev/dri/renderD128 \\ -i /config/input.mkv \\ -c:v h264_vaapi \\ -b:v 4M \\ -vf 'format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720' \\ -c:a copy \\ /config/output.mkv","title":"Hardware accelerated (VAAPI)"},{"location":"images/docker-ffmpeg/#nvidia-hardware-accelerated","text":"docker run --rm -it \\ --runtime=nvidia \\ -v $(pwd):/config \\ linuxserver/ffmpeg \\ -hwaccel nvdec \\ -i /config/input.mkv \\ -c:v h264_nvenc \\ -b:v 4M \\ -vf scale=1280:720 \\ -c:a copy \\ /config/output.mkv","title":"Nvidia Hardware accelerated"},{"location":"images/docker-ffmpeg/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-ffmpeg.git cd docker-ffmpeg docker build \\ --no-cache \\ --pull \\ -t linuxserver/ffmpeg:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-ffmpeg/#versions","text":"14.12.22: - Rebase to Jammy, bump to 5.1.2. 19.06.22: - Rebase to Focal. 26.08.21: - Add support for libOpenCL. 01.07.21: - Bump to 4.4. 17.06.20: - Bump to 4.3. 16.06.20: - Add support for libvmaf. 01.08.19: - Initial release.","title":"Versions"},{"location":"images/docker-filezilla/","text":"linuxserver/filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : filezilla : image : lscr.io/linuxserver/filezilla:latest container_name : filezilla security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = filezilla \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/filezilla:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 FileZilla desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores local files and settings Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it filezilla /bin/bash To monitor the logs of the container in realtime: docker logs -f filezilla Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' filezilla Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/filezilla:latest Versions 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 18.04.21: - Initial release.","title":"filezilla"},{"location":"images/docker-filezilla/#linuxserverfilezilla","text":"FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.","title":"linuxserver/filezilla"},{"location":"images/docker-filezilla/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-filezilla/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-filezilla/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-filezilla/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : filezilla : image : lscr.io/linuxserver/filezilla:latest container_name : filezilla security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-filezilla/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = filezilla \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/filezilla:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-filezilla/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-filezilla/#ports-p","text":"Parameter Function 3000 FileZilla desktop gui.","title":"Ports (-p)"},{"location":"images/docker-filezilla/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-filezilla/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores local files and settings","title":"Volume Mappings (-v)"},{"location":"images/docker-filezilla/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-filezilla/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-filezilla/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-filezilla/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-filezilla/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-filezilla/#support-info","text":"Shell access whilst the container is running: docker exec -it filezilla /bin/bash To monitor the logs of the container in realtime: docker logs -f filezilla Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' filezilla Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/filezilla:latest","title":"Support Info"},{"location":"images/docker-filezilla/#versions","text":"21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 18.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-firefox/","text":"linuxserver/firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : firefox : image : lscr.io/linuxserver/firefox:latest container_name : firefox security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 shm_size : \"1gb\" restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = firefox \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --shm-size = \"1gb\" \\ --restart unless-stopped \\ lscr.io/linuxserver/firefox:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Firefox desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores local files and settings Miscellaneous Options Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it firefox /bin/bash To monitor the logs of the container in realtime: docker logs -f firefox Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' firefox Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/firefox:latest Versions 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15, stop using ESR. 26.09.21: - Rebase to Alpine 3.14. 19.04.21: - Initial release.","title":"firefox"},{"location":"images/docker-firefox/#linuxserverfirefox","text":"Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.","title":"linuxserver/firefox"},{"location":"images/docker-firefox/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-firefox/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-firefox/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-firefox/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : firefox : image : lscr.io/linuxserver/firefox:latest container_name : firefox security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 shm_size : \"1gb\" restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-firefox/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = firefox \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --shm-size = \"1gb\" \\ --restart unless-stopped \\ lscr.io/linuxserver/firefox:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-firefox/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-firefox/#ports-p","text":"Parameter Function 3000 Firefox desktop gui.","title":"Ports (-p)"},{"location":"images/docker-firefox/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-firefox/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores local files and settings","title":"Volume Mappings (-v)"},{"location":"images/docker-firefox/#miscellaneous-options","text":"Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-firefox/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-firefox/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-firefox/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-firefox/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-firefox/#support-info","text":"Shell access whilst the container is running: docker exec -it firefox /bin/bash To monitor the logs of the container in realtime: docker logs -f firefox Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' firefox Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/firefox:latest","title":"Support Info"},{"location":"images/docker-firefox/#versions","text":"21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15, stop using ESR. 26.09.21: - Rebase to Alpine 3.14. 19.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-fleet/","text":"linuxserver/fleet Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup . Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via http://your_ip_here:8080/login to manage your repositories. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : fleet : image : lscr.io/linuxserver/fleet:latest container_name : fleet environment : - PUID=1000 - PGID=1000 - fleet_admin_authentication_type=DATABASE - fleet_database_url=jdbc:mariadb://:3306/fleet - fleet_database_username=fleet_user - fleet_database_password=dbuserpassword - fleet_admin_secret=randomstring #optional volumes : - :/config ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = fleet \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e fleet_admin_authentication_type = DATABASE \\ -e fleet_database_url = jdbc:mariadb://:3306/fleet \\ -e fleet_database_username = fleet_user \\ -e fleet_database_password = dbuserpassword \\ -e fleet_admin_secret = randomstring ` #optional` \\ -p 8080 :8080 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/fleet:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Http port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation fleet_admin_authentication_type=DATABASE A switch to define how Fleet manages user logins. If set to DATABASE, see the related optional params. Can be set to either DATABASE or PROPERTIES. fleet_database_url=jdbc:mariadb://:3306/fleet The full JDBC connection string to the Fleet database fleet_database_username=fleet_user The username with the relevant GRANT permissions for the database fleet_database_password=dbuserpassword The database user's password. fleet_admin_secret=randomstring A string used as part of the password key derivation process. Volume Mappings ( -v ) Volume Function /config The primary config file and rolling log files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it fleet /bin/bash To monitor the logs of the container in realtime: docker logs -f fleet Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fleet Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fleet:latest Versions 02.05.22: - Rebase to Alpine 3.15. 13.12.21: - Add mitigations for CVE-2021-44228 26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet 19.12.19: - Rebasing to alpine 3.11. 02.07.19: - Rebasing to alpine 3.10. 02.07.19: - Stop container if fleet fails. 19.05.19: - Use new base images for arm versions. 01.04.19: - Initial Release","title":"fleet"},{"location":"images/docker-fleet/#linuxserverfleet","text":"Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.","title":"linuxserver/fleet"},{"location":"images/docker-fleet/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-fleet/#application-setup","text":"Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup . Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via http://your_ip_here:8080/login to manage your repositories.","title":"Application Setup"},{"location":"images/docker-fleet/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-fleet/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : fleet : image : lscr.io/linuxserver/fleet:latest container_name : fleet environment : - PUID=1000 - PGID=1000 - fleet_admin_authentication_type=DATABASE - fleet_database_url=jdbc:mariadb://:3306/fleet - fleet_database_username=fleet_user - fleet_database_password=dbuserpassword - fleet_admin_secret=randomstring #optional volumes : - :/config ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-fleet/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = fleet \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e fleet_admin_authentication_type = DATABASE \\ -e fleet_database_url = jdbc:mariadb://:3306/fleet \\ -e fleet_database_username = fleet_user \\ -e fleet_database_password = dbuserpassword \\ -e fleet_admin_secret = randomstring ` #optional` \\ -p 8080 :8080 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/fleet:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-fleet/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-fleet/#ports-p","text":"Parameter Function 8080 Http port","title":"Ports (-p)"},{"location":"images/docker-fleet/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation fleet_admin_authentication_type=DATABASE A switch to define how Fleet manages user logins. If set to DATABASE, see the related optional params. Can be set to either DATABASE or PROPERTIES. fleet_database_url=jdbc:mariadb://:3306/fleet The full JDBC connection string to the Fleet database fleet_database_username=fleet_user The username with the relevant GRANT permissions for the database fleet_database_password=dbuserpassword The database user's password. fleet_admin_secret=randomstring A string used as part of the password key derivation process.","title":"Environment Variables (-e)"},{"location":"images/docker-fleet/#volume-mappings-v","text":"Volume Function /config The primary config file and rolling log files.","title":"Volume Mappings (-v)"},{"location":"images/docker-fleet/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-fleet/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-fleet/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-fleet/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-fleet/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-fleet/#support-info","text":"Shell access whilst the container is running: docker exec -it fleet /bin/bash To monitor the logs of the container in realtime: docker logs -f fleet Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fleet Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fleet:latest","title":"Support Info"},{"location":"images/docker-fleet/#versions","text":"02.05.22: - Rebase to Alpine 3.15. 13.12.21: - Add mitigations for CVE-2021-44228 26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet 19.12.19: - Rebasing to alpine 3.11. 02.07.19: - Rebasing to alpine 3.10. 02.07.19: - Stop container if fleet fails. 19.05.19: - Use new base images for arm versions. 01.04.19: - Initial Release","title":"Versions"},{"location":"images/docker-foldingathome/","text":"linuxserver/foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup This image sets up the Folding@home client. The interface is available at http://your-ip:7396 . The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port 36330 (no password). There are a couple of minor issues with the webgui: - If you get an \"ERR_EMPTY_RESPONSE\" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via shft-F5 or ctrl-F5 . GPU Hardware Acceleration Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : foldingathome : image : lscr.io/linuxserver/foldingathome:latest container_name : foldingathome environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 7396:7396 - 36330:36330 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = foldingathome \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 7396 :7396 \\ -p 36330 :36330 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/foldingathome:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 7396 Folding@home web gui. 36330 Optional port for connecting remotely via FAHControl app (no password). Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where Folding@home should store its database and config. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it foldingathome /bin/bash To monitor the logs of the container in realtime: docker logs -f foldingathome Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' foldingathome Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/foldingathome:latest Versions 14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. 15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings. 09.01.21: - Add nvidia.icd. 14.04.20: - Add Folding@home donation links. 20.03.20: - Initial release.","title":"foldingathome"},{"location":"images/docker-foldingathome/#linuxserverfoldingathome","text":"Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.","title":"linuxserver/foldingathome"},{"location":"images/docker-foldingathome/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-foldingathome/#application-setup","text":"This image sets up the Folding@home client. The interface is available at http://your-ip:7396 . The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port 36330 (no password). There are a couple of minor issues with the webgui: - If you get an \"ERR_EMPTY_RESPONSE\" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via shft-F5 or ctrl-F5 .","title":"Application Setup"},{"location":"images/docker-foldingathome/#gpu-hardware-acceleration","text":"","title":"GPU Hardware Acceleration"},{"location":"images/docker-foldingathome/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.","title":"Nvidia"},{"location":"images/docker-foldingathome/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-foldingathome/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : foldingathome : image : lscr.io/linuxserver/foldingathome:latest container_name : foldingathome environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 7396:7396 - 36330:36330 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-foldingathome/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = foldingathome \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 7396 :7396 \\ -p 36330 :36330 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/foldingathome:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-foldingathome/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-foldingathome/#ports-p","text":"Parameter Function 7396 Folding@home web gui. 36330 Optional port for connecting remotely via FAHControl app (no password).","title":"Ports (-p)"},{"location":"images/docker-foldingathome/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-foldingathome/#volume-mappings-v","text":"Volume Function /config Where Folding@home should store its database and config.","title":"Volume Mappings (-v)"},{"location":"images/docker-foldingathome/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-foldingathome/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-foldingathome/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-foldingathome/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-foldingathome/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-foldingathome/#support-info","text":"Shell access whilst the container is running: docker exec -it foldingathome /bin/bash To monitor the logs of the container in realtime: docker logs -f foldingathome Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' foldingathome Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/foldingathome:latest","title":"Support Info"},{"location":"images/docker-foldingathome/#versions","text":"14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. 15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings. 09.01.21: - Add nvidia.icd. 14.04.20: - Add Folding@home donation links. 20.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-freshrss/","text":"linuxserver/freshrss Freshrss is a free, self-hostable aggregator for rss feeds. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui set up wizard at http://serverIP:port For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for \"host\" of your database server. Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : freshrss : image : lscr.io/linuxserver/freshrss:latest container_name : freshrss environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = freshrss \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/freshrss:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Local storage for freshrss site files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it freshrss /bin/bash To monitor the logs of the container in realtime: docker logs -f freshrss Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freshrss Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freshrss:latest Versions 21.10.22: - Fix cron init to properly migrate existing installations to new app location. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Add multi arch and pipeline logic. 05.09.18: - Rebase to alpine linux 3.8. 17.03.18: - Update nginx config to resolve api not working. 08.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 23.02.17: - Rebase to alpine linux 3.5 and nginx. 14.10.16: - Add version layer information. 08.10.16: - Add Sqlite support for standalone operation. 27.09.16: - Fix for cron job. 11.09.16: - Add layer badges to README. 23.11.15: - Update dependencies to latest requirements. 21.08.15: - Initial Release.","title":"freshrss"},{"location":"images/docker-freshrss/#linuxserverfreshrss","text":"Freshrss is a free, self-hostable aggregator for rss feeds.","title":"linuxserver/freshrss"},{"location":"images/docker-freshrss/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-freshrss/#application-setup","text":"Access the webui set up wizard at http://serverIP:port For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for \"host\" of your database server. Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart.","title":"Application Setup"},{"location":"images/docker-freshrss/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-freshrss/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : freshrss : image : lscr.io/linuxserver/freshrss:latest container_name : freshrss environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-freshrss/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = freshrss \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/freshrss:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-freshrss/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-freshrss/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-freshrss/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-freshrss/#volume-mappings-v","text":"Volume Function /config Local storage for freshrss site files.","title":"Volume Mappings (-v)"},{"location":"images/docker-freshrss/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-freshrss/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-freshrss/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-freshrss/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-freshrss/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-freshrss/#support-info","text":"Shell access whilst the container is running: docker exec -it freshrss /bin/bash To monitor the logs of the container in realtime: docker logs -f freshrss Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freshrss Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freshrss:latest","title":"Support Info"},{"location":"images/docker-freshrss/#versions","text":"21.10.22: - Fix cron init to properly migrate existing installations to new app location. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Add multi arch and pipeline logic. 05.09.18: - Rebase to alpine linux 3.8. 17.03.18: - Update nginx config to resolve api not working. 08.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 23.02.17: - Rebase to alpine linux 3.5 and nginx. 14.10.16: - Add version layer information. 08.10.16: - Add Sqlite support for standalone operation. 27.09.16: - Fix for cron job. 11.09.16: - Add layer badges to README. 23.11.15: - Update dependencies to latest requirements. 21.08.15: - Initial Release.","title":"Versions"},{"location":"images/docker-gazee/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/gazee Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v6-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=gazee \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 4242:4242 \\ -v :/config \\ -v :/comics \\ -v :/mylar \\ -v :/certs \\ --restart unless-stopped \\ linuxserver/gazee docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : gazee : image : linuxserver/gazee container_name : gazee environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/comics - :/mylar - :/certs ports : - 4242:4242 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4242 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation Volume Mappings ( -v ) Volume Function /config Where Gazee should store config files. /comics Path to comics folder. /mylar Path to Mylar DB. /certs Where SSL certs should be stored. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Webui can be found at your-ip:4242 Default username and password for the web interface: Username: admin Password: gazee Click the gear icon to go to the settings page. Change the default admin password or add a new admin and remove the admin user altogether. Comic path should be set to /comics Optional Mylar DB path should be set to /mylar Optional path for certificates and keys should be set to /certs After you update the settings, Gazee will restart and begin an intial scan of your comic library. Happy Reading! Support Info Shell access whilst the container is running: docker exec -it gazee /bin/bash To monitor the logs of the container in realtime: docker logs -f gazee Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gazee Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/gazee Versions 27.03.19: - Deprecate image and get in semi working state. 11.02.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 30.12.17: - Ensure version 11 of cherrypy. 07.12.17: - Initial Release.","title":"gazee"},{"location":"images/docker-gazee/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-gazee/#linuxservergazee","text":"Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser.","title":"linuxserver/gazee"},{"location":"images/docker-gazee/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v6-latest","title":"Supported Architectures"},{"location":"images/docker-gazee/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-gazee/#docker","text":"docker create \\ --name=gazee \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 4242:4242 \\ -v :/config \\ -v :/comics \\ -v :/mylar \\ -v :/certs \\ --restart unless-stopped \\ linuxserver/gazee","title":"docker"},{"location":"images/docker-gazee/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : gazee : image : linuxserver/gazee container_name : gazee environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/comics - :/mylar - :/certs ports : - 4242:4242 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-gazee/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-gazee/#ports-p","text":"Parameter Function 4242 WebUI","title":"Ports (-p)"},{"location":"images/docker-gazee/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-gazee/#volume-mappings-v","text":"Volume Function /config Where Gazee should store config files. /comics Path to comics folder. /mylar Path to Mylar DB. /certs Where SSL certs should be stored.","title":"Volume Mappings (-v)"},{"location":"images/docker-gazee/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-gazee/#application-setup","text":"Webui can be found at your-ip:4242 Default username and password for the web interface: Username: admin Password: gazee Click the gear icon to go to the settings page. Change the default admin password or add a new admin and remove the admin user altogether. Comic path should be set to /comics Optional Mylar DB path should be set to /mylar Optional path for certificates and keys should be set to /certs After you update the settings, Gazee will restart and begin an intial scan of your comic library. Happy Reading!","title":"Application Setup"},{"location":"images/docker-gazee/#support-info","text":"Shell access whilst the container is running: docker exec -it gazee /bin/bash To monitor the logs of the container in realtime: docker logs -f gazee Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gazee Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/gazee","title":"Support Info"},{"location":"images/docker-gazee/#versions","text":"27.03.19: - Deprecate image and get in semi working state. 11.02.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 30.12.17: - Ensure version 11 of cherrypy. 07.12.17: - Initial Release.","title":"Versions"},{"location":"images/docker-gmail-order-bot/","text":"lsiodev/gmail-order-bot Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it. The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account. The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion. By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details: const Discord = require('discord.js'); const YAML = require('yaml'); const discordtoken = process.env.DISCORD_TOKEN; const roomid = process.env.DISCORD_ROOM exports.orderbot = async function(order) { return new Promise(resolve => { const client = new Discord.Client(); client.login(discordtoken); client.on('ready', async () => { delete order.rawpayload await client.channels.cache.get(roomid.toString()).send(YAML.stringify(order)); client.destroy(); resolve(true) }) }); } This code will be passed an order object containing all the order details parsed from the email message. Here we use custom env variables to set application settings to connect up to and send a message to discord. In order to use this bot you will need to perform the following setup steps: 1. Create a dedicated gmail account to use for https://checkout.linuxserver.io 2. Enable API access to this Gmail account by clicking on Enable the Gmail API here https://developers.google.com/gmail/api/quickstart/nodejs 3. Save your credentials.json file from that action to the folder you will be bind mounting as /config 4. Run docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v /path/to/data:/config --entrypoint /config.sh lsiodev/gmail-order-bot 5. Go to the URL prompted and enter the key you get from it. 6. Start the container using the run/compose example in this readme. When the container starts if you are using a custom bot located in /config/bots it will install the node modules included in it's package.json, do not use system level node modules this container is Alpine based and it will cause conflicts. From there the bot will loop in for your defined timeout and pull in emails and spit out orders to your destination. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : gmail-order-bot : image : lscr.io/lsiodev/gmail-order-bot:latest container_name : gmail-order-bot environment : - PUID=1000 - PGID=1000 - BOT_NAME=discord - LOOP_TIME=60 volumes : - /path/to/data:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = gmail-order-bot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e BOT_NAME = discord \\ -e LOOP_TIME = 60 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/lsiodev/gmail-order-bot:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation BOT_NAME=discord On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots) LOOP_TIME=60 Time in seconds to reach into gmail and get new messages to process Volume Mappings ( -v ) Volume Function /config Path to gmail tokens and custom/default bots Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it gmail-order-bot /bin/bash To monitor the logs of the container in realtime: docker logs -f gmail-order-bot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gmail-order-bot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/lsiodev/gmail-order-bot:latest Versions 06.07.20: - Initial Release.","title":"gmail-order-bot"},{"location":"images/docker-gmail-order-bot/#lsiodevgmail-order-bot","text":"Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.","title":"lsiodev/gmail-order-bot"},{"location":"images/docker-gmail-order-bot/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-gmail-order-bot/#application-setup","text":"This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it. The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account. The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion. By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details: const Discord = require('discord.js'); const YAML = require('yaml'); const discordtoken = process.env.DISCORD_TOKEN; const roomid = process.env.DISCORD_ROOM exports.orderbot = async function(order) { return new Promise(resolve => { const client = new Discord.Client(); client.login(discordtoken); client.on('ready', async () => { delete order.rawpayload await client.channels.cache.get(roomid.toString()).send(YAML.stringify(order)); client.destroy(); resolve(true) }) }); } This code will be passed an order object containing all the order details parsed from the email message. Here we use custom env variables to set application settings to connect up to and send a message to discord. In order to use this bot you will need to perform the following setup steps: 1. Create a dedicated gmail account to use for https://checkout.linuxserver.io 2. Enable API access to this Gmail account by clicking on Enable the Gmail API here https://developers.google.com/gmail/api/quickstart/nodejs 3. Save your credentials.json file from that action to the folder you will be bind mounting as /config 4. Run docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v /path/to/data:/config --entrypoint /config.sh lsiodev/gmail-order-bot 5. Go to the URL prompted and enter the key you get from it. 6. Start the container using the run/compose example in this readme. When the container starts if you are using a custom bot located in /config/bots it will install the node modules included in it's package.json, do not use system level node modules this container is Alpine based and it will cause conflicts. From there the bot will loop in for your defined timeout and pull in emails and spit out orders to your destination.","title":"Application Setup"},{"location":"images/docker-gmail-order-bot/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-gmail-order-bot/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : gmail-order-bot : image : lscr.io/lsiodev/gmail-order-bot:latest container_name : gmail-order-bot environment : - PUID=1000 - PGID=1000 - BOT_NAME=discord - LOOP_TIME=60 volumes : - /path/to/data:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-gmail-order-bot/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = gmail-order-bot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e BOT_NAME = discord \\ -e LOOP_TIME = 60 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/lsiodev/gmail-order-bot:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-gmail-order-bot/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-gmail-order-bot/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-gmail-order-bot/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation BOT_NAME=discord On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots) LOOP_TIME=60 Time in seconds to reach into gmail and get new messages to process","title":"Environment Variables (-e)"},{"location":"images/docker-gmail-order-bot/#volume-mappings-v","text":"Volume Function /config Path to gmail tokens and custom/default bots","title":"Volume Mappings (-v)"},{"location":"images/docker-gmail-order-bot/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-gmail-order-bot/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-gmail-order-bot/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-gmail-order-bot/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-gmail-order-bot/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-gmail-order-bot/#support-info","text":"Shell access whilst the container is running: docker exec -it gmail-order-bot /bin/bash To monitor the logs of the container in realtime: docker logs -f gmail-order-bot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gmail-order-bot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/lsiodev/gmail-order-bot:latest","title":"Support Info"},{"location":"images/docker-gmail-order-bot/#versions","text":"06.07.20: - Initial Release.","title":"Versions"},{"location":"images/docker-grav/","text":"linuxserver/grav Grav is a Fast, Simple, and Flexible, file-based Web-platform. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup For more information check out the Grav documentation . Our image includes the grav-admin plugin. To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. docker exec -it -w /app/www/public grav bin/gpm Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : grav : image : lscr.io/linuxserver/grav:latest container_name : grav environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = grav \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/grav:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Port for web frontend Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it grav /bin/bash To monitor the logs of the container in realtime: docker logs -f grav Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grav Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grav:latest Versions 11.12.22: - Rebase to Alpine 3.17, PHP 8.1. 05.09.22: - All php to read envs passed to container. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 03.09.21: - Added support for Redis caching. 01.07.21: - Rebase to Alpine 3.14. 09.04.21: - Initial Release.","title":"grav"},{"location":"images/docker-grav/#linuxservergrav","text":"Grav is a Fast, Simple, and Flexible, file-based Web-platform.","title":"linuxserver/grav"},{"location":"images/docker-grav/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-grav/#application-setup","text":"For more information check out the Grav documentation . Our image includes the grav-admin plugin. To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. docker exec -it -w /app/www/public grav bin/gpm","title":"Application Setup"},{"location":"images/docker-grav/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-grav/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : grav : image : lscr.io/linuxserver/grav:latest container_name : grav environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-grav/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = grav \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/grav:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-grav/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-grav/#ports-p","text":"Parameter Function 80 Port for web frontend","title":"Ports (-p)"},{"location":"images/docker-grav/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York","title":"Environment Variables (-e)"},{"location":"images/docker-grav/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-grav/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-grav/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-grav/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-grav/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-grav/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-grav/#support-info","text":"Shell access whilst the container is running: docker exec -it grav /bin/bash To monitor the logs of the container in realtime: docker logs -f grav Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grav Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grav:latest","title":"Support Info"},{"location":"images/docker-grav/#versions","text":"11.12.22: - Rebase to Alpine 3.17, PHP 8.1. 05.09.22: - All php to read envs passed to container. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 03.09.21: - Added support for Redis caching. 01.07.21: - Rebase to Alpine 3.14. 09.04.21: - Initial Release.","title":"Versions"},{"location":"images/docker-grocy/","text":"linuxserver/grocy Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility. Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool For more information on grocy visit their website and check it out: https://grocy.info Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : grocy : image : lscr.io/linuxserver/grocy:latest container_name : grocy environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 9283:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = grocy \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9283 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/grocy:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 will map the container's port 80 to port 9283 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London for specifying your timezone Volume Mappings ( -v ) Volume Function /config this will store any uploaded data on the docker host Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it grocy /bin/bash To monitor the logs of the container in realtime: docker logs -f grocy Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grocy Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grocy:latest Versions 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.08.21: - Rebase to Alpine 3.14 and PHP 8. 25.07.21: - Add 'int','json' and 'zlib' PHP extensions. 10.05.21: - Reduce image size. 08.04.21: - Update docs to reflect jenkins builder changes. 17.02.21: - Rebasing to alpine 3.13. 26.01.21: - Add 'ldap' PHP extension. 22.12.20: - Add 'ctype' PHP extension. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 22.09.19: - Add 'gd' PHP extension. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 27.12.18: - Initial Release.","title":"grocy"},{"location":"images/docker-grocy/#linuxservergrocy","text":"Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility. Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool For more information on grocy visit their website and check it out: https://grocy.info","title":"linuxserver/grocy"},{"location":"images/docker-grocy/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-grocy/#application-setup","text":"Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin","title":"Application Setup"},{"location":"images/docker-grocy/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-grocy/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : grocy : image : lscr.io/linuxserver/grocy:latest container_name : grocy environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 9283:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-grocy/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = grocy \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9283 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/grocy:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-grocy/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-grocy/#ports-p","text":"Parameter Function 80 will map the container's port 80 to port 9283 on the host","title":"Ports (-p)"},{"location":"images/docker-grocy/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London for specifying your timezone","title":"Environment Variables (-e)"},{"location":"images/docker-grocy/#volume-mappings-v","text":"Volume Function /config this will store any uploaded data on the docker host","title":"Volume Mappings (-v)"},{"location":"images/docker-grocy/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-grocy/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-grocy/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-grocy/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-grocy/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-grocy/#support-info","text":"Shell access whilst the container is running: docker exec -it grocy /bin/bash To monitor the logs of the container in realtime: docker logs -f grocy Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grocy Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grocy:latest","title":"Support Info"},{"location":"images/docker-grocy/#versions","text":"20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.08.21: - Rebase to Alpine 3.14 and PHP 8. 25.07.21: - Add 'int','json' and 'zlib' PHP extensions. 10.05.21: - Reduce image size. 08.04.21: - Update docs to reflect jenkins builder changes. 17.02.21: - Rebasing to alpine 3.13. 26.01.21: - Add 'ldap' PHP extension. 22.12.20: - Add 'ctype' PHP extension. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 22.09.19: - Add 'gd' PHP extension. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 27.12.18: - Initial Release.","title":"Versions"},{"location":"images/docker-guacd/","text":"linuxserver/guacd Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : guacd : image : lscr.io/linuxserver/guacd:latest container_name : guacd ports : - 4822:4822 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = guacd \\ -p 4822 :4822 \\ --restart unless-stopped \\ lscr.io/linuxserver/guacd:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4822 Port Guacamole server listens on Environment Variables ( -e ) Env Function Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it guacd /bin/bash To monitor the logs of the container in realtime: docker logs -f guacd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' guacd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/guacd:latest Versions 11.03.22: - Bump to 1.4.0. 15.05.21: - Add terminus font for SSH support. 08.05.21: - Bump to 1.3.0, rebase to Alpine. 27.07.20: - Bump to 1.2.0. 17.04.20: - Bump back 1.1.0, rebase to focal 08.02.20: - Bump to 1.1.0. 25.05.19: - Initial Release.","title":"guacd"},{"location":"images/docker-guacd/#linuxserverguacd","text":"Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.","title":"linuxserver/guacd"},{"location":"images/docker-guacd/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-guacd/#application-setup","text":"This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite .","title":"Application Setup"},{"location":"images/docker-guacd/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-guacd/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : guacd : image : lscr.io/linuxserver/guacd:latest container_name : guacd ports : - 4822:4822 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-guacd/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = guacd \\ -p 4822 :4822 \\ --restart unless-stopped \\ lscr.io/linuxserver/guacd:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-guacd/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-guacd/#ports-p","text":"Parameter Function 4822 Port Guacamole server listens on","title":"Ports (-p)"},{"location":"images/docker-guacd/#environment-variables-e","text":"Env Function","title":"Environment Variables (-e)"},{"location":"images/docker-guacd/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-guacd/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-guacd/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-guacd/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-guacd/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-guacd/#support-info","text":"Shell access whilst the container is running: docker exec -it guacd /bin/bash To monitor the logs of the container in realtime: docker logs -f guacd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' guacd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/guacd:latest","title":"Support Info"},{"location":"images/docker-guacd/#versions","text":"11.03.22: - Bump to 1.4.0. 15.05.21: - Add terminus font for SSH support. 08.05.21: - Bump to 1.3.0, rebase to Alpine. 27.07.20: - Bump to 1.2.0. 17.04.20: - Bump back 1.1.0, rebase to focal 08.02.20: - Bump to 1.1.0. 25.05.19: - Initial Release.","title":"Versions"},{"location":"images/docker-habridge/","text":"linuxserver/habridge Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge. This bridge was built to help put the Internet of Things together. For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking. For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : habridge : image : lscr.io/linuxserver/habridge:latest container_name : habridge environment : - PUID=1000 - PGID=1000 - SEC_KEY= - TZ=Europe/London volumes : - :/config ports : - 8080:8080 - 50000:50000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = habridge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e SEC_KEY = \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -p 50000 :50000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/habridge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 WebUI 50000 HABridge communication port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SEC_KEY= Key used to secure communication. TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where HABridge stores config files and data. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it habridge /bin/bash To monitor the logs of the container in realtime: docker logs -f habridge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' habridge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/habridge:latest Versions 11.12.22: - Rebasing to alpine 3.17. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 28.08.18: - Rebase to alpine 3.8. 12.04.18: - Add workaround to bind to port 80 if needed. 08.04.18: - Initial Release.","title":"habridge"},{"location":"images/docker-habridge/#linuxserverhabridge","text":"Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge. This bridge was built to help put the Internet of Things together. For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki","title":"linuxserver/habridge"},{"location":"images/docker-habridge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-habridge/#application-setup","text":"To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking. For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki","title":"Application Setup"},{"location":"images/docker-habridge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-habridge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : habridge : image : lscr.io/linuxserver/habridge:latest container_name : habridge environment : - PUID=1000 - PGID=1000 - SEC_KEY= - TZ=Europe/London volumes : - :/config ports : - 8080:8080 - 50000:50000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-habridge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = habridge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e SEC_KEY = \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -p 50000 :50000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/habridge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-habridge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-habridge/#ports-p","text":"Parameter Function 8080 WebUI 50000 HABridge communication port.","title":"Ports (-p)"},{"location":"images/docker-habridge/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SEC_KEY= Key used to secure communication. TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-habridge/#volume-mappings-v","text":"Volume Function /config Where HABridge stores config files and data.","title":"Volume Mappings (-v)"},{"location":"images/docker-habridge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-habridge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-habridge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-habridge/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-habridge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-habridge/#support-info","text":"Shell access whilst the container is running: docker exec -it habridge /bin/bash To monitor the logs of the container in realtime: docker logs -f habridge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' habridge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/habridge:latest","title":"Support Info"},{"location":"images/docker-habridge/#versions","text":"11.12.22: - Rebasing to alpine 3.17. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 28.08.18: - Rebase to alpine 3.8. 12.04.18: - Add workaround to bind to port 80 if needed. 08.04.18: - Initial Release.","title":"Versions"},{"location":"images/docker-headphones/","text":"linuxserver/headphones Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : headphones : image : lscr.io/linuxserver/headphones:latest container_name : headphones environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/music ports : - 8181:8181 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = headphones \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8181 :8181 \\ -v :/config \\ -v :/downloads \\ -v :/music \\ --restart unless-stopped \\ lscr.io/linuxserver/headphones:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8181 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. /downloads ISOs. /music Your music directory. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it headphones /bin/bash To monitor the logs of the container in realtime: docker logs -f headphones Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' headphones Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/headphones:latest Versions 02.02.22: - Rebasing to alpine 3.15. Updating to Python 3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 09.05.19: - Add default UTC timezone if user does not set it. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 18.08.18: - Rebase to alpine 3.8. 03.04.18: - Remove forced port and update README. 05.01.18: - Deprecate cpu_core routine lack of scaling. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Add flac package to handle FLAC based .cue. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Reduce layer, replace broken source for shntool. 07.02.17: - Rebase to alpine 3.5. 23.12.16: - Fix capitalisation in README. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README, compile shntool. 08.08.16: - Rebase to alpine linux. 18.07.15: - Inital Release","title":"headphones"},{"location":"images/docker-headphones/#linuxserverheadphones","text":"Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole.","title":"linuxserver/headphones"},{"location":"images/docker-headphones/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-headphones/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-headphones/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : headphones : image : lscr.io/linuxserver/headphones:latest container_name : headphones environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/music ports : - 8181:8181 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-headphones/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = headphones \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8181 :8181 \\ -v :/config \\ -v :/downloads \\ -v :/music \\ --restart unless-stopped \\ lscr.io/linuxserver/headphones:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-headphones/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-headphones/#ports-p","text":"Parameter Function 8181 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-headphones/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-headphones/#volume-mappings-v","text":"Volume Function /config Configuration files. /downloads ISOs. /music Your music directory.","title":"Volume Mappings (-v)"},{"location":"images/docker-headphones/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-headphones/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-headphones/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-headphones/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-headphones/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-headphones/#support-info","text":"Shell access whilst the container is running: docker exec -it headphones /bin/bash To monitor the logs of the container in realtime: docker logs -f headphones Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' headphones Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/headphones:latest","title":"Support Info"},{"location":"images/docker-headphones/#versions","text":"02.02.22: - Rebasing to alpine 3.15. Updating to Python 3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 09.05.19: - Add default UTC timezone if user does not set it. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 18.08.18: - Rebase to alpine 3.8. 03.04.18: - Remove forced port and update README. 05.01.18: - Deprecate cpu_core routine lack of scaling. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Add flac package to handle FLAC based .cue. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Reduce layer, replace broken source for shntool. 07.02.17: - Rebase to alpine 3.5. 23.12.16: - Fix capitalisation in README. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README, compile shntool. 08.08.16: - Rebase to alpine linux. 18.07.15: - Inital Release","title":"Versions"},{"location":"images/docker-healthchecks/","text":"linuxserver/healthchecks Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the WebUI at :8000. For more information, check out Healthchecks . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : healthchecks : image : lscr.io/linuxserver/healthchecks:latest container_name : healthchecks environment : - PUID=1000 - PGID=1000 - SITE_ROOT= - SITE_NAME= - DEFAULT_FROM_EMAIL= - EMAIL_HOST= - EMAIL_PORT= - EMAIL_HOST_USER= - EMAIL_HOST_PASSWORD= - EMAIL_USE_TLS= - SUPERUSER_EMAIL= - SUPERUSER_PASSWORD= - REGENERATE_SETTINGS= #optional - ALLOWED_HOSTS= #optional - APPRISE_ENABLED= #optional - DEBUG= #optional - INTEGRATIONS_ALLOW_PRIVATE_IPS= #optional - PING_EMAIL_DOMAIN= #optional - SECRET_KEY= #optional - SITE_LOGO_URL= #optional volumes : - /path/to/data:/config ports : - 8000:8000 - 2525:2525 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = healthchecks \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e SITE_ROOT = \\ -e SITE_NAME = \\ -e DEFAULT_FROM_EMAIL = \\ -e EMAIL_HOST = \\ -e EMAIL_PORT = \\ -e EMAIL_HOST_USER = \\ -e EMAIL_HOST_PASSWORD = \\ -e EMAIL_USE_TLS = \\ -e SUPERUSER_EMAIL = \\ -e SUPERUSER_PASSWORD = \\ -e REGENERATE_SETTINGS = ` #optional` \\ -e ALLOWED_HOSTS = ` #optional` \\ -e APPRISE_ENABLED = ` #optional` \\ -e DEBUG = ` #optional` \\ -e INTEGRATIONS_ALLOW_PRIVATE_IPS = ` #optional` \\ -e PING_EMAIL_DOMAIN = ` #optional` \\ -e SECRET_KEY = ` #optional` \\ -e SITE_LOGO_URL = ` #optional` \\ -p 8000 :8000 \\ -p 2525 :2525 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/healthchecks:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 Healthchecks Web UI 2525 Port for inbound SMTP pings Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SITE_ROOT= The site's top-level URL and the port it listens to if differrent than 80 or 443 (e.g., https://healthchecks.example.com:8000) SITE_NAME= The site's name (e.g., \"Example Corp HealthChecks\") DEFAULT_FROM_EMAIL= From email for alerts EMAIL_HOST= SMTP host EMAIL_PORT= SMTP port EMAIL_HOST_USER= SMTP user EMAIL_HOST_PASSWORD= SMTP password EMAIL_USE_TLS= Use TLS for SMTP ( True or False ) SUPERUSER_EMAIL= Superuser email SUPERUSER_PASSWORD= Superuser password REGENERATE_SETTINGS= Defaults to False. Set to True to always override the local_settings.py file with values from environment variables. Do not set to True if you have made manual modifications to this file. ALLOWED_HOSTS= Array of valid hostnames for the server [\"test.com\",\"test2.com\"] (default: [\"*\"] ) APPRISE_ENABLED= Defaults to False. A boolean that turns on/off the Apprise integration (https://github.com/caronc/apprise) DEBUG= Defaults to True. Debug mode relaxes CSRF protections and increases logging verbosity but should be disabled for production instances as it will impact performance and security. INTEGRATIONS_ALLOW_PRIVATE_IPS= Defaults to False. Set to True to allow integrations to connect to private IP addresses. PING_EMAIL_DOMAIN= The domain to use for generating ping email addresses. SECRET_KEY= A secret key used for cryptographic signing. Will generate a secure value if one is not supplied SITE_LOGO_URL= Full URL to custom site logo Volume Mappings ( -v ) Volume Function /config Database and healthchecks config directory Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it healthchecks /bin/bash To monitor the logs of the container in realtime: docker logs -f healthchecks Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' healthchecks Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/healthchecks:latest Versions 22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS. 18.10.22: - Add curl-dev to fix broken pip builds. 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 27.09.22: - Fix sending of Email Reports 08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0) 11.11.21: - Add Apprise to Docker as in v1.24.0 10.09.21: - Fix creation of superuser 07.08.21: - Update custom logo handling to support changes in v1.22.0 11.07.21: - Rebase to Alpine 3.14. 18.05.21: - Add linuxserver wheel index. 11.01.21: - Add libffi-dev to allow building of python cryptography lib. 19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard 19.12.19: - Rebasing to alpine 3.11. 31.10.19: - Add postgres client and fix config for CSRF. 23.10.19: - Allow to create superuser 28.06.19: - Rebasing to alpine 3.10. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.02.19: - Adding mysql libs needed for using a database. 11.10.18: - adding pipeline logic and multi arching release 15.11.17: - git pull is now in Dockerfile so each tagged container contains the same code version 17.10.17: - Fixed local_settings.py output 27.09.17: - Initial Release.","title":"healthchecks"},{"location":"images/docker-healthchecks/#linuxserverhealthchecks","text":"Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.","title":"linuxserver/healthchecks"},{"location":"images/docker-healthchecks/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-healthchecks/#application-setup","text":"Access the WebUI at :8000. For more information, check out Healthchecks .","title":"Application Setup"},{"location":"images/docker-healthchecks/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-healthchecks/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : healthchecks : image : lscr.io/linuxserver/healthchecks:latest container_name : healthchecks environment : - PUID=1000 - PGID=1000 - SITE_ROOT= - SITE_NAME= - DEFAULT_FROM_EMAIL= - EMAIL_HOST= - EMAIL_PORT= - EMAIL_HOST_USER= - EMAIL_HOST_PASSWORD= - EMAIL_USE_TLS= - SUPERUSER_EMAIL= - SUPERUSER_PASSWORD= - REGENERATE_SETTINGS= #optional - ALLOWED_HOSTS= #optional - APPRISE_ENABLED= #optional - DEBUG= #optional - INTEGRATIONS_ALLOW_PRIVATE_IPS= #optional - PING_EMAIL_DOMAIN= #optional - SECRET_KEY= #optional - SITE_LOGO_URL= #optional volumes : - /path/to/data:/config ports : - 8000:8000 - 2525:2525 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-healthchecks/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = healthchecks \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e SITE_ROOT = \\ -e SITE_NAME = \\ -e DEFAULT_FROM_EMAIL = \\ -e EMAIL_HOST = \\ -e EMAIL_PORT = \\ -e EMAIL_HOST_USER = \\ -e EMAIL_HOST_PASSWORD = \\ -e EMAIL_USE_TLS = \\ -e SUPERUSER_EMAIL = \\ -e SUPERUSER_PASSWORD = \\ -e REGENERATE_SETTINGS = ` #optional` \\ -e ALLOWED_HOSTS = ` #optional` \\ -e APPRISE_ENABLED = ` #optional` \\ -e DEBUG = ` #optional` \\ -e INTEGRATIONS_ALLOW_PRIVATE_IPS = ` #optional` \\ -e PING_EMAIL_DOMAIN = ` #optional` \\ -e SECRET_KEY = ` #optional` \\ -e SITE_LOGO_URL = ` #optional` \\ -p 8000 :8000 \\ -p 2525 :2525 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/healthchecks:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-healthchecks/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-healthchecks/#ports-p","text":"Parameter Function 8000 Healthchecks Web UI 2525 Port for inbound SMTP pings","title":"Ports (-p)"},{"location":"images/docker-healthchecks/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SITE_ROOT= The site's top-level URL and the port it listens to if differrent than 80 or 443 (e.g., https://healthchecks.example.com:8000) SITE_NAME= The site's name (e.g., \"Example Corp HealthChecks\") DEFAULT_FROM_EMAIL= From email for alerts EMAIL_HOST= SMTP host EMAIL_PORT= SMTP port EMAIL_HOST_USER= SMTP user EMAIL_HOST_PASSWORD= SMTP password EMAIL_USE_TLS= Use TLS for SMTP ( True or False ) SUPERUSER_EMAIL= Superuser email SUPERUSER_PASSWORD= Superuser password REGENERATE_SETTINGS= Defaults to False. Set to True to always override the local_settings.py file with values from environment variables. Do not set to True if you have made manual modifications to this file. ALLOWED_HOSTS= Array of valid hostnames for the server [\"test.com\",\"test2.com\"] (default: [\"*\"] ) APPRISE_ENABLED= Defaults to False. A boolean that turns on/off the Apprise integration (https://github.com/caronc/apprise) DEBUG= Defaults to True. Debug mode relaxes CSRF protections and increases logging verbosity but should be disabled for production instances as it will impact performance and security. INTEGRATIONS_ALLOW_PRIVATE_IPS= Defaults to False. Set to True to allow integrations to connect to private IP addresses. PING_EMAIL_DOMAIN= The domain to use for generating ping email addresses. SECRET_KEY= A secret key used for cryptographic signing. Will generate a secure value if one is not supplied SITE_LOGO_URL= Full URL to custom site logo","title":"Environment Variables (-e)"},{"location":"images/docker-healthchecks/#volume-mappings-v","text":"Volume Function /config Database and healthchecks config directory","title":"Volume Mappings (-v)"},{"location":"images/docker-healthchecks/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-healthchecks/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-healthchecks/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-healthchecks/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-healthchecks/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-healthchecks/#support-info","text":"Shell access whilst the container is running: docker exec -it healthchecks /bin/bash To monitor the logs of the container in realtime: docker logs -f healthchecks Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' healthchecks Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/healthchecks:latest","title":"Support Info"},{"location":"images/docker-healthchecks/#versions","text":"22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS. 18.10.22: - Add curl-dev to fix broken pip builds. 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 27.09.22: - Fix sending of Email Reports 08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0) 11.11.21: - Add Apprise to Docker as in v1.24.0 10.09.21: - Fix creation of superuser 07.08.21: - Update custom logo handling to support changes in v1.22.0 11.07.21: - Rebase to Alpine 3.14. 18.05.21: - Add linuxserver wheel index. 11.01.21: - Add libffi-dev to allow building of python cryptography lib. 19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard 19.12.19: - Rebasing to alpine 3.11. 31.10.19: - Add postgres client and fix config for CSRF. 23.10.19: - Allow to create superuser 28.06.19: - Rebasing to alpine 3.10. 12.04.19: - Rebase to Alpine 3.9. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.02.19: - Adding mysql libs needed for using a database. 11.10.18: - adding pipeline logic and multi arching release 15.11.17: - git pull is now in Dockerfile so each tagged container contains the same code version 17.10.17: - Fixed local_settings.py output 27.09.17: - Initial Release.","title":"Versions"},{"location":"images/docker-hedgedoc/","text":"linuxserver/hedgedoc HedgeDoc gives you access to all your files wherever you are. HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup HedgeDoc web interface can be accessed http://${IP}:3000/ , if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT) Full list of HedgeDoc options For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above. To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : hedgedoc : image : lscr.io/linuxserver/hedgedoc:latest container_name : hedgedoc environment : - PUID=1000 - PGID=1000 - DB_HOST= - DB_PORT=3306 - DB_USER=hedgedoc - DB_PASS= - DB_NAME=hedgedoc - TZ=Europe/London - CMD_DOMAIN=localhost - CMD_URL_ADDPORT=false #optional - CMD_PROTOCOL_USESSL=false #optional - CMD_PORT=3000 #optional - CMD_ALLOW_ORIGIN=['localhost'] #optional volumes : - /path/to/appdata:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = hedgedoc \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e DB_HOST = \\ -e DB_PORT = 3306 \\ -e DB_USER = hedgedoc \\ -e DB_PASS = \\ -e DB_NAME = hedgedoc \\ -e TZ = Europe/London \\ -e CMD_DOMAIN = localhost \\ -e CMD_URL_ADDPORT = false ` #optional` \\ -e CMD_PROTOCOL_USESSL = false ` #optional` \\ -e CMD_PORT = 3000 ` #optional` \\ -e CMD_ALLOW_ORIGIN =[ 'localhost' ] ` #optional` \\ -p 3000 :3000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/hedgedoc:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Web gui port (internal port also needs to be changed if accessing at port other than 80, 443 and 3000). Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST= Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=hedgedoc Database user DB_PASS= Database password DB_NAME=hedgedoc Database name TZ=Europe/London Specify a timezone to use EG Europe/London. CMD_DOMAIN=localhost The address the gui will be accessed at (ie. 192.168.1.1 or hedgedoc.domain.com ). CMD_URL_ADDPORT=false Set to true if using a port other than 80 or 443 . CMD_PROTOCOL_USESSL=false Set to true if accessing over https via reverse proxy. CMD_PORT=3000 If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. CMD_PORT=5000 ) and change the port mapping accordingly (5000:5000). CMD_ALLOW_ORIGIN=['localhost'] Comma-separated list of allowed hostnames Volume Mappings ( -v ) Volume Function /config HedgeDoc config and configurable files Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it hedgedoc /bin/bash To monitor the logs of the container in realtime: docker logs -f hedgedoc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hedgedoc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hedgedoc:latest Versions 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 10.04.22: - Use python3 to build node sqlite3. 10.02.22: - Rebase to Alpine 3.15. 09.02.22: - Add optional var CMD_PORT that is needed for accessing at port other than 80, 443 and 3000. 09.12.21: - Add optional var CMD_PROTOCOL_USESSL that is needed for reverse proxy. 07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent. 15.10.21: - Add required env var CMD_DOMAIN . 05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public. 03.05.21: - Remove deprecated sequalizerc step. 22.12.20: - Initial release","title":"hedgedoc"},{"location":"images/docker-hedgedoc/#linuxserverhedgedoc","text":"HedgeDoc gives you access to all your files wherever you are. HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.","title":"linuxserver/hedgedoc"},{"location":"images/docker-hedgedoc/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-hedgedoc/#application-setup","text":"HedgeDoc web interface can be accessed http://${IP}:3000/ , if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT) Full list of HedgeDoc options For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above. To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository","title":"Application Setup"},{"location":"images/docker-hedgedoc/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-hedgedoc/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : hedgedoc : image : lscr.io/linuxserver/hedgedoc:latest container_name : hedgedoc environment : - PUID=1000 - PGID=1000 - DB_HOST= - DB_PORT=3306 - DB_USER=hedgedoc - DB_PASS= - DB_NAME=hedgedoc - TZ=Europe/London - CMD_DOMAIN=localhost - CMD_URL_ADDPORT=false #optional - CMD_PROTOCOL_USESSL=false #optional - CMD_PORT=3000 #optional - CMD_ALLOW_ORIGIN=['localhost'] #optional volumes : - /path/to/appdata:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-hedgedoc/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = hedgedoc \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e DB_HOST = \\ -e DB_PORT = 3306 \\ -e DB_USER = hedgedoc \\ -e DB_PASS = \\ -e DB_NAME = hedgedoc \\ -e TZ = Europe/London \\ -e CMD_DOMAIN = localhost \\ -e CMD_URL_ADDPORT = false ` #optional` \\ -e CMD_PROTOCOL_USESSL = false ` #optional` \\ -e CMD_PORT = 3000 ` #optional` \\ -e CMD_ALLOW_ORIGIN =[ 'localhost' ] ` #optional` \\ -p 3000 :3000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/hedgedoc:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-hedgedoc/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-hedgedoc/#ports-p","text":"Parameter Function 3000 Web gui port (internal port also needs to be changed if accessing at port other than 80, 443 and 3000).","title":"Ports (-p)"},{"location":"images/docker-hedgedoc/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST= Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=hedgedoc Database user DB_PASS= Database password DB_NAME=hedgedoc Database name TZ=Europe/London Specify a timezone to use EG Europe/London. CMD_DOMAIN=localhost The address the gui will be accessed at (ie. 192.168.1.1 or hedgedoc.domain.com ). CMD_URL_ADDPORT=false Set to true if using a port other than 80 or 443 . CMD_PROTOCOL_USESSL=false Set to true if accessing over https via reverse proxy. CMD_PORT=3000 If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. CMD_PORT=5000 ) and change the port mapping accordingly (5000:5000). CMD_ALLOW_ORIGIN=['localhost'] Comma-separated list of allowed hostnames","title":"Environment Variables (-e)"},{"location":"images/docker-hedgedoc/#volume-mappings-v","text":"Volume Function /config HedgeDoc config and configurable files","title":"Volume Mappings (-v)"},{"location":"images/docker-hedgedoc/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-hedgedoc/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-hedgedoc/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-hedgedoc/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-hedgedoc/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-hedgedoc/#support-info","text":"Shell access whilst the container is running: docker exec -it hedgedoc /bin/bash To monitor the logs of the container in realtime: docker logs -f hedgedoc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hedgedoc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hedgedoc:latest","title":"Support Info"},{"location":"images/docker-hedgedoc/#versions","text":"02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 10.04.22: - Use python3 to build node sqlite3. 10.02.22: - Rebase to Alpine 3.15. 09.02.22: - Add optional var CMD_PORT that is needed for accessing at port other than 80, 443 and 3000. 09.12.21: - Add optional var CMD_PROTOCOL_USESSL that is needed for reverse proxy. 07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent. 15.10.21: - Add required env var CMD_DOMAIN . 05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public. 03.05.21: - Remove deprecated sequalizerc step. 22.12.20: - Initial release","title":"Versions"},{"location":"images/docker-heimdall/","text":"linuxserver/heimdall Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Heimdall releases. development \u2705 Latest commit from the github 2.x branch. Application Setup Access the web gui at http://SERVERIP:PORT Adding password protection This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd . Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : heimdall : image : lscr.io/linuxserver/heimdall:latest container_name : heimdall environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = heimdall \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/heimdall:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui 443 https gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it heimdall /bin/bash To monitor the logs of the container in realtime: docker logs -f heimdall Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' heimdall Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/heimdall:latest Versions 14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 04.11.22: - Build commits to upstream branch 2.x for the development tag. 13.03.21: - Make searchproviders.yaml user configurable. 10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel. 10.02.21: - Rebasing to alpine 3.13. 17.08.20: - Add php7-curl. 01.06.20: - Rebasing to alpine 3.12. 17.01.20: - Use nginx from baseimage. 19.12.19: - Rebasing to alpine 3.11. 16.07.19: - Save laravel.log to /config/log/heimdall. 28.06.19: - Rebasing to alpine 3.10. 01.04.19: - Fix permission detect logic. 26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.03.19: - Clarify docker image tags in readme. 22.02.19: - Rebasing to alpine 3.9. 16.01.18: - Generate random app key in .env for new installs. 20.11.18: - Upgrade baseimage packages during build. 04.11.18: - Add php7-zip. 31.10.18: - Add queue service. 17.10.18: - Symlink avatars folder. 16.10.18: - Updated fastcgi_params for user login support. 07.10.18: - Symlink .env rather than copy. It now resides under /config/www 30.09.18: - Multi-arch image. Move .env to /config . 05.09.18: - Rebase to alpine linux 3.8. 06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place 12.02.18: - Initial Release.","title":"heimdall"},{"location":"images/docker-heimdall/#linuxserverheimdall","text":"Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.","title":"linuxserver/heimdall"},{"location":"images/docker-heimdall/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-heimdall/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Heimdall releases. development \u2705 Latest commit from the github 2.x branch.","title":"Version Tags"},{"location":"images/docker-heimdall/#application-setup","text":"Access the web gui at http://SERVERIP:PORT","title":"Application Setup"},{"location":"images/docker-heimdall/#adding-password-protection","text":"This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd . Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container.","title":"Adding password protection"},{"location":"images/docker-heimdall/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-heimdall/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : heimdall : image : lscr.io/linuxserver/heimdall:latest container_name : heimdall environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-heimdall/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = heimdall \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/heimdall:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-heimdall/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-heimdall/#ports-p","text":"Parameter Function 80 http gui 443 https gui","title":"Ports (-p)"},{"location":"images/docker-heimdall/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-heimdall/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-heimdall/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-heimdall/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-heimdall/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-heimdall/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-heimdall/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-heimdall/#support-info","text":"Shell access whilst the container is running: docker exec -it heimdall /bin/bash To monitor the logs of the container in realtime: docker logs -f heimdall Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' heimdall Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/heimdall:latest","title":"Support Info"},{"location":"images/docker-heimdall/#versions","text":"14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 04.11.22: - Build commits to upstream branch 2.x for the development tag. 13.03.21: - Make searchproviders.yaml user configurable. 10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel. 10.02.21: - Rebasing to alpine 3.13. 17.08.20: - Add php7-curl. 01.06.20: - Rebasing to alpine 3.12. 17.01.20: - Use nginx from baseimage. 19.12.19: - Rebasing to alpine 3.11. 16.07.19: - Save laravel.log to /config/log/heimdall. 28.06.19: - Rebasing to alpine 3.10. 01.04.19: - Fix permission detect logic. 26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.03.19: - Clarify docker image tags in readme. 22.02.19: - Rebasing to alpine 3.9. 16.01.18: - Generate random app key in .env for new installs. 20.11.18: - Upgrade baseimage packages during build. 04.11.18: - Add php7-zip. 31.10.18: - Add queue service. 17.10.18: - Symlink avatars folder. 16.10.18: - Updated fastcgi_params for user login support. 07.10.18: - Symlink .env rather than copy. It now resides under /config/www 30.09.18: - Multi-arch image. Move .env to /config . 05.09.18: - Rebase to alpine linux 3.8. 06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place 12.02.18: - Initial Release.","title":"Versions"},{"location":"images/docker-homeassistant/","text":"linuxserver/homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This image is based on Home Assistant Core. The Webui can be found at http://your-ip:8123 . Follow the wizard to set up Home Assistant. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : homeassistant : image : lscr.io/linuxserver/homeassistant:latest container_name : homeassistant network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 8123:8123 #optional devices : - /path/to/device:/path/to/device #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = homeassistant \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8123 :8123 ` #optional` \\ -v /path/to/data:/config \\ --device /path/to/device:/path/to/device ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/homeassistant:latest Host vs. Bridge Home Assistant can discover and automatically configure zeroconf / mDNS and UPnP devices on your network. In order for this to work you must create the container with --net=host . Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8123 Application WebUI, only use this if you are not using host mode. Networking ( --net ) Parameter Function --net=host Shares host networking with container. Required for some devices to be discovered by Home Assistant. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify your TimeZone e.g. Europe/London. Volume Mappings ( -v ) Volume Function /config Home Assistant config storage path. Device Mappings ( --device ) Parameter Function /path/to/device For passing through USB, serial or gpio devices. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it homeassistant /bin/bash To monitor the logs of the container in realtime: docker logs -f homeassistant Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' homeassistant Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/homeassistant:latest Versions 16.11.22: - Fix the dep conflict for google calendar. 23.09.22: - Migrate to s6v3. 29.07.22: - Improve usb device permission fix. 07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels. 07.05.22: - Build matplotlib with the same Numpy version as HA req. 31.03.22: - Install pycups. 07.03.22: - Install PySwitchbot. 02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size. 04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel. 12.12.21: - Use the new build.yaml to determine HA base version. 25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels. 13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly. 13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly. 12.09.21: - Rebase to alpine 3.14. Build on native armhf. 09.08.21: - Fixed broken build caused by missing dependency. 01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant. 25.02.21: - Add python dependencies from homeassistant base image. 07.02.21: - Fix building from the wrong requirement file. Add ssh client & external DB libs. 06.02.21: - Add iputils so ping works as non root user. 30.01.21: - Initial Release.","title":"homeassistant"},{"location":"images/docker-homeassistant/#linuxserverhomeassistant","text":"Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.","title":"linuxserver/homeassistant"},{"location":"images/docker-homeassistant/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-homeassistant/#application-setup","text":"This image is based on Home Assistant Core. The Webui can be found at http://your-ip:8123 . Follow the wizard to set up Home Assistant.","title":"Application Setup"},{"location":"images/docker-homeassistant/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-homeassistant/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : homeassistant : image : lscr.io/linuxserver/homeassistant:latest container_name : homeassistant network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 8123:8123 #optional devices : - /path/to/device:/path/to/device #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-homeassistant/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = homeassistant \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8123 :8123 ` #optional` \\ -v /path/to/data:/config \\ --device /path/to/device:/path/to/device ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/homeassistant:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-homeassistant/#host-vs-bridge","text":"Home Assistant can discover and automatically configure zeroconf / mDNS and UPnP devices on your network. In order for this to work you must create the container with --net=host .","title":"Host vs. Bridge"},{"location":"images/docker-homeassistant/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-homeassistant/#ports-p","text":"Parameter Function 8123 Application WebUI, only use this if you are not using host mode.","title":"Ports (-p)"},{"location":"images/docker-homeassistant/#networking-net","text":"Parameter Function --net=host Shares host networking with container. Required for some devices to be discovered by Home Assistant.","title":"Networking (--net)"},{"location":"images/docker-homeassistant/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify your TimeZone e.g. Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-homeassistant/#volume-mappings-v","text":"Volume Function /config Home Assistant config storage path.","title":"Volume Mappings (-v)"},{"location":"images/docker-homeassistant/#device-mappings-device","text":"Parameter Function /path/to/device For passing through USB, serial or gpio devices.","title":"Device Mappings (--device)"},{"location":"images/docker-homeassistant/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-homeassistant/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-homeassistant/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-homeassistant/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-homeassistant/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-homeassistant/#support-info","text":"Shell access whilst the container is running: docker exec -it homeassistant /bin/bash To monitor the logs of the container in realtime: docker logs -f homeassistant Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' homeassistant Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/homeassistant:latest","title":"Support Info"},{"location":"images/docker-homeassistant/#versions","text":"16.11.22: - Fix the dep conflict for google calendar. 23.09.22: - Migrate to s6v3. 29.07.22: - Improve usb device permission fix. 07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels. 07.05.22: - Build matplotlib with the same Numpy version as HA req. 31.03.22: - Install pycups. 07.03.22: - Install PySwitchbot. 02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size. 04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel. 12.12.21: - Use the new build.yaml to determine HA base version. 25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels. 13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly. 13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly. 12.09.21: - Rebase to alpine 3.14. Build on native armhf. 09.08.21: - Fixed broken build caused by missing dependency. 01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant. 25.02.21: - Add python dependencies from homeassistant base image. 07.02.21: - Fix building from the wrong requirement file. Add ssh client & external DB libs. 06.02.21: - Add iputils so ping works as non root user. 30.01.21: - Initial Release.","title":"Versions"},{"location":"images/docker-htpcmanager/","text":"linuxserver/htpcmanager Htpcmanager is a front end for many htpc related applications. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : htpcmanager : image : lscr.io/linuxserver/htpcmanager:latest container_name : htpcmanager environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 8085:8085 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = htpcmanager \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8085 :8085 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/htpcmanager:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8085 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it htpcmanager /bin/bash To monitor the logs of the container in realtime: docker logs -f htpcmanager Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' htpcmanager Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/htpcmanager:latest Versions 24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo. 08.04.21: - Fix build. 10.02.21: - Rebasing to alpine 3.13. 26.10.20: - Rebase to alpine 3.12, python3, change upstream project 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 26.09.16: - Add back cherrypy after removal from baseimage. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 14.01.15: - Remove hardcoded loglevel from the run command, set in webui 19.09.15: - Initial Release.","title":"htpcmanager"},{"location":"images/docker-htpcmanager/#linuxserverhtpcmanager","text":"Htpcmanager is a front end for many htpc related applications.","title":"linuxserver/htpcmanager"},{"location":"images/docker-htpcmanager/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-htpcmanager/#application-setup","text":"The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.","title":"Application Setup"},{"location":"images/docker-htpcmanager/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-htpcmanager/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : htpcmanager : image : lscr.io/linuxserver/htpcmanager:latest container_name : htpcmanager environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 8085:8085 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-htpcmanager/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = htpcmanager \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8085 :8085 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/htpcmanager:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-htpcmanager/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-htpcmanager/#ports-p","text":"Parameter Function 8085 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-htpcmanager/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-htpcmanager/#volume-mappings-v","text":"Volume Function /config Configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-htpcmanager/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-htpcmanager/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-htpcmanager/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-htpcmanager/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-htpcmanager/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-htpcmanager/#support-info","text":"Shell access whilst the container is running: docker exec -it htpcmanager /bin/bash To monitor the logs of the container in realtime: docker logs -f htpcmanager Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' htpcmanager Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/htpcmanager:latest","title":"Support Info"},{"location":"images/docker-htpcmanager/#versions","text":"24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo. 08.04.21: - Fix build. 10.02.21: - Rebasing to alpine 3.13. 26.10.20: - Rebase to alpine 3.12, python3, change upstream project 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 26.09.16: - Add back cherrypy after removal from baseimage. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 14.01.15: - Remove hardcoded loglevel from the run command, set in webui 19.09.15: - Initial Release.","title":"Versions"},{"location":"images/docker-hydra/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/hydra Hydra is a meta search for NZB indexers and the \"spiritual successor\" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : hydra : image : lscr.io/linuxserver/hydra container_name : hydra environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads ports : - 5075:5075 restart : unless-stopped docker cli docker run -d \\ --name=hydra \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 5075:5075 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/hydra Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5075 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where hydra should store config files. /downloads NZB download folder. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup THIS IMAGE HAS BEEN DEPRECATED. Please use linuxserver/nzbhydra2 instead. The web interface is at :5075 , to set up indexers and connections to your nzb download applications. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it hydra /bin/bash To monitor the logs of the container in realtime: docker logs -f hydra Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hydra Versions 04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users. 14.10.16: - Add version layer information. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 25.01.16: - Initial Release.","title":"hydra"},{"location":"images/docker-hydra/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-hydra/#linuxserverhydra","text":"Hydra is a meta search for NZB indexers and the \"spiritual successor\" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers.","title":"linuxserver/hydra"},{"location":"images/docker-hydra/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-hydra/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-hydra/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : hydra : image : lscr.io/linuxserver/hydra container_name : hydra environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads ports : - 5075:5075 restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-hydra/#docker-cli","text":"docker run -d \\ --name=hydra \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 5075:5075 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/hydra","title":"docker cli"},{"location":"images/docker-hydra/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-hydra/#ports-p","text":"Parameter Function 5075 WebUI","title":"Ports (-p)"},{"location":"images/docker-hydra/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-hydra/#volume-mappings-v","text":"Volume Function /config Where hydra should store config files. /downloads NZB download folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-hydra/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-hydra/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-hydra/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-hydra/#application-setup","text":"THIS IMAGE HAS BEEN DEPRECATED. Please use linuxserver/nzbhydra2 instead. The web interface is at :5075 , to set up indexers and connections to your nzb download applications.","title":"Application Setup"},{"location":"images/docker-hydra/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-hydra/#support-info","text":"Shell access whilst the container is running: docker exec -it hydra /bin/bash To monitor the logs of the container in realtime: docker logs -f hydra Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hydra","title":"Support Info"},{"location":"images/docker-hydra/#versions","text":"04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Add pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 12.12.17: - Rebase to alpine 3.7. 20.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users. 14.10.16: - Add version layer information. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 25.01.16: - Initial Release.","title":"Versions"},{"location":"images/docker-hydra2/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2. linuxserver/hydra2 Hydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/hydra2:v2.10.2-ls49 Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Version Tags This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable releases dev Prereleases from their GitHub Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=hydra2 \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 5076:5076 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ linuxserver/hydra2 docker-compose Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : hydra2 : image : linuxserver/hydra2 container_name : hydra2 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads ports : - 5076:5076 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5076 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where hydra2 should store config files. /downloads NZB download folder. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup The web interface is at :5076 , to set up indexers and connections to your nzb download applications. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above. Support Info Shell access whilst the container is running: docker exec -it hydra2 /bin/bash To monitor the logs of the container in realtime: docker logs -f hydra2 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra2 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/hydra2 Versions 19.04.20: - Deprecated. New repo at linuxserver/docker-nzbhydra2 . 08.01.20: - Switch to python3. 05.01.20: - Add dev tag for prereleases. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11). 10.08.18: - Rebase to ubuntu bionic. 15.04.18: - Change to port 5076 in the Dockerfile. 11.01.18: - Initial Release.","title":"hydra2"},{"location":"images/docker-hydra2/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2.","title":"DEPRECATION NOTICE"},{"location":"images/docker-hydra2/#linuxserverhydra2","text":"Hydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/hydra2:v2.10.2-ls49","title":"linuxserver/hydra2"},{"location":"images/docker-hydra2/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-hydra2/#version-tags","text":"This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable releases dev Prereleases from their GitHub","title":"Version Tags"},{"location":"images/docker-hydra2/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-hydra2/#docker","text":"docker create \\ --name=hydra2 \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 5076:5076 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ linuxserver/hydra2","title":"docker"},{"location":"images/docker-hydra2/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : hydra2 : image : linuxserver/hydra2 container_name : hydra2 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads ports : - 5076:5076 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-hydra2/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-hydra2/#ports-p","text":"Parameter Function 5076 WebUI","title":"Ports (-p)"},{"location":"images/docker-hydra2/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-hydra2/#volume-mappings-v","text":"Volume Function /config Where hydra2 should store config files. /downloads NZB download folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-hydra2/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-hydra2/#application-setup","text":"The web interface is at :5076 , to set up indexers and connections to your nzb download applications.","title":"Application Setup"},{"location":"images/docker-hydra2/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.","title":"Docker Mods"},{"location":"images/docker-hydra2/#support-info","text":"Shell access whilst the container is running: docker exec -it hydra2 /bin/bash To monitor the logs of the container in realtime: docker logs -f hydra2 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra2 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/hydra2","title":"Support Info"},{"location":"images/docker-hydra2/#versions","text":"19.04.20: - Deprecated. New repo at linuxserver/docker-nzbhydra2 . 08.01.20: - Switch to python3. 05.01.20: - Add dev tag for prereleases. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11). 10.08.18: - Rebase to ubuntu bionic. 15.04.18: - Change to port 5076 in the Dockerfile. 11.01.18: - Initial Release.","title":"Versions"},{"location":"images/docker-ipfs/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore. linuxserver/ipfs Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Application Setup In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them. Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month. For more on using IPFS please read the docs here Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ipfs : image : lscr.io/linuxserver/ipfs container_name : ipfs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 80:80 - 4001:4001 - 5001:5001 - 8080:8080 - 443:443 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ipfs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 4001 :4001 \\ -p 5001 :5001 \\ -p 8080 :8080 \\ -p 443 :443 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ipfs Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 The port for the IPFS web UI 4001 Peering port, this is the only port you should expose to the internet 5001 API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on 8080 Gateway Port, actually serves IPFS content 443 HTTPS port for web UI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config IPFS storage and config files/logs Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ipfs /bin/bash To monitor the logs of the container in realtime: docker logs -f ipfs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ipfs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ipfs Versions 02.02.22: - Deprecate. 19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14. 01.04.21: - Add migration bins to image to support upgrades. 24.02.20: - Rebase to Alpine 3.13. 09.07.19: - Initial version.","title":"ipfs"},{"location":"images/docker-ipfs/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore.","title":"DEPRECATION NOTICE"},{"location":"images/docker-ipfs/#linuxserveripfs","text":"Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.","title":"linuxserver/ipfs"},{"location":"images/docker-ipfs/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-ipfs/#application-setup","text":"In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them. Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month. For more on using IPFS please read the docs here","title":"Application Setup"},{"location":"images/docker-ipfs/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ipfs/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ipfs : image : lscr.io/linuxserver/ipfs container_name : ipfs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 80:80 - 4001:4001 - 5001:5001 - 8080:8080 - 443:443 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ipfs/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ipfs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 4001 :4001 \\ -p 5001 :5001 \\ -p 8080 :8080 \\ -p 443 :443 ` #optional` \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ipfs","title":"docker cli (click here for more info)"},{"location":"images/docker-ipfs/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ipfs/#ports-p","text":"Parameter Function 80 The port for the IPFS web UI 4001 Peering port, this is the only port you should expose to the internet 5001 API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on 8080 Gateway Port, actually serves IPFS content 443 HTTPS port for web UI","title":"Ports (-p)"},{"location":"images/docker-ipfs/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-ipfs/#volume-mappings-v","text":"Volume Function /config IPFS storage and config files/logs","title":"Volume Mappings (-v)"},{"location":"images/docker-ipfs/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ipfs/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ipfs/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ipfs/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-ipfs/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ipfs/#support-info","text":"Shell access whilst the container is running: docker exec -it ipfs /bin/bash To monitor the logs of the container in realtime: docker logs -f ipfs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ipfs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ipfs","title":"Support Info"},{"location":"images/docker-ipfs/#versions","text":"02.02.22: - Deprecate. 19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14. 01.04.21: - Add migration bins to image to support upgrades. 24.02.20: - Rebase to Alpine 3.13. 09.07.19: - Initial version.","title":"Versions"},{"location":"images/docker-jackett/","text":"linuxserver/jackett Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Jackett Releases development \u2705 Latest Jackett Releases Application Setup The web interface is at :9117 , configure various trackers and connections to other apps there. More info at Jackett . Disable autoupdates in the webui to prevent jackett crashing, the image is refreshed when new versions are released. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : jackett : image : lscr.io/linuxserver/jackett:latest container_name : jackett environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - AUTO_UPDATE=true #optional - RUN_OPTS= #optional volumes : - :/config - :/downloads ports : - 9117:9117 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = jackett \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e AUTO_UPDATE = true ` #optional` \\ -e RUN_OPTS = ` #optional` \\ -p 9117 :9117 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/jackett:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9117 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. AUTO_UPDATE=true Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default) RUN_OPTS= Optionally specify additional arguments to be passed. Volume Mappings ( -v ) Volume Function /config Where Jackett should store its config file. /downloads Path to torrent blackhole. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it jackett /bin/bash To monitor the logs of the container in realtime: docker logs -f jackett Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jackett Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jackett:latest Versions 10.05.22: - Rebase to Ubuntu Focal. 24.05.20: - Allow user to optionally enable auto updates. 31.12.19: - Remove agressive startup chowning. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images. 11.02.19: - Add pipeline logic and multi arch. 11.06.18: - Ensure root ownership of Jackett files. 13.12.17: - Fix continuation lines. 17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based. 09.02.17: - Rebase to alpine 3.5. 29.10.16: - Call python2 from edge main to satisfy new mono dependency. 14.10.16: - Add version layer information. 22.09.16: - Remove autoupdate, tidy up Dockerfile. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 06.08.16: - Rebase to alpine linux for smaller image. 25.01.16: - Initial Release.","title":"jackett"},{"location":"images/docker-jackett/#linuxserverjackett","text":"Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.","title":"linuxserver/jackett"},{"location":"images/docker-jackett/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-jackett/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Jackett Releases development \u2705 Latest Jackett Releases","title":"Version Tags"},{"location":"images/docker-jackett/#application-setup","text":"The web interface is at :9117 , configure various trackers and connections to other apps there. More info at Jackett . Disable autoupdates in the webui to prevent jackett crashing, the image is refreshed when new versions are released.","title":"Application Setup"},{"location":"images/docker-jackett/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-jackett/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : jackett : image : lscr.io/linuxserver/jackett:latest container_name : jackett environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - AUTO_UPDATE=true #optional - RUN_OPTS= #optional volumes : - :/config - :/downloads ports : - 9117:9117 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-jackett/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = jackett \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e AUTO_UPDATE = true ` #optional` \\ -e RUN_OPTS = ` #optional` \\ -p 9117 :9117 \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/jackett:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-jackett/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-jackett/#ports-p","text":"Parameter Function 9117 WebUI","title":"Ports (-p)"},{"location":"images/docker-jackett/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. AUTO_UPDATE=true Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default) RUN_OPTS= Optionally specify additional arguments to be passed.","title":"Environment Variables (-e)"},{"location":"images/docker-jackett/#volume-mappings-v","text":"Volume Function /config Where Jackett should store its config file. /downloads Path to torrent blackhole.","title":"Volume Mappings (-v)"},{"location":"images/docker-jackett/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-jackett/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-jackett/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-jackett/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-jackett/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-jackett/#support-info","text":"Shell access whilst the container is running: docker exec -it jackett /bin/bash To monitor the logs of the container in realtime: docker logs -f jackett Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jackett Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jackett:latest","title":"Support Info"},{"location":"images/docker-jackett/#versions","text":"10.05.22: - Rebase to Ubuntu Focal. 24.05.20: - Allow user to optionally enable auto updates. 31.12.19: - Remove agressive startup chowning. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images. 11.02.19: - Add pipeline logic and multi arch. 11.06.18: - Ensure root ownership of Jackett files. 13.12.17: - Fix continuation lines. 17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based. 09.02.17: - Rebase to alpine 3.5. 29.10.16: - Call python2 from edge main to satisfy new mono dependency. 14.10.16: - Add version layer information. 22.09.16: - Remove autoupdate, tidy up Dockerfile. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 06.08.16: - Rebase to alpine linux for smaller image. 25.01.16: - Initial Release.","title":"Versions"},{"location":"images/docker-jellyfin/","text":"linuxserver/jellyfin Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Jellyfin releases nightly \u2705 Nightly Jellyfin releases Application Setup Webui can be found at http://:8096 More information can be found on the official documentation here . Hardware Acceleration Intel Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the jellyfin docker container. OpenMAX (Raspberry Pi) Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container: --device=/dev/vcsm:/dev/vcsm --device=/dev/vchiq:/dev/vchiq -v /opt/vc/lib:/opt/vc/lib V4L2 (Raspberry Pi) Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container: --device=/dev/video10:/dev/video10 --device=/dev/video11:/dev/video11 --device=/dev/video12:/dev/video12 Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : jellyfin : image : lscr.io/linuxserver/jellyfin:latest container_name : jellyfin environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional volumes : - /path/to/library:/config - /path/to/tvseries:/data/tvshows - /path/to/movies:/data/movies ports : - 8096:8096 - 8920:8920 #optional - 7359:7359/udp #optional - 1900:1900/udp #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = jellyfin \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e JELLYFIN_PublishedServerUrl = 192 .168.0.5 ` #optional` \\ -p 8096 :8096 \\ -p 8920 :8920 ` #optional` \\ -p 7359 :7359/udp ` #optional` \\ -p 1900 :1900/udp ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvseries:/data/tvshows \\ -v /path/to/movies:/data/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/jellyfin:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8096 Http webUI. 8920 Optional - Https webUI (you need to set up your own certificate). 7359/udp Optional - Allows clients to discover Jellyfin on the local network. 1900/udp Optional - Service discovery used by DNLA and clients. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London). JELLYFIN_PublishedServerUrl=192.168.0.5 Set the autodiscovery response domain or IP address. Volume Mappings ( -v ) Volume Function /config Jellyfin data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Optional Parameters The official documentation for ports has additional ports that can provide auto discovery. Service Discovery ( 1900/udp ) - Since client auto-discover would break if this option were configurable, you cannot change this in the settings at this time. DLNA also uses this port and is required to be in the local subnet. Client Discovery ( 7359/udp ) - Allows clients to discover Jellyfin on the local network. A broadcast message to this port with \"Who is Jellyfin Server?\" will get a JSON response that includes the server address, ID, and name. -p 7359:7359/udp \\ -p 1900:1900/udp \\ The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it jellyfin /bin/bash To monitor the logs of the container in realtime: docker logs -f jellyfin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jellyfin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jellyfin:latest Versions 07.12.22: - Rebase master to Jammy, migrate to s6v3. 11.06.22: - Switch to upstream repo's ffmpeg5 build. 05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors. 25.12.21: - Fix video device group perms error message. 10.12.21: - Rework readme, disable template sync. 22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper. 23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the bionic tag. 21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW. 20.01.21: - Add Jellyfin Binary Environmentals 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.11.20: - Rebase to Focal, branch off Bionic. 22.07.20: - Ingest releases from Jellyfin repo. 28.04.20: - Replace MMAL/OMX dependency device /dev/vc-mem with /dev/vcsm as the former was not sufficient for raspbian. 11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder. 11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under /config ). 30.01.20: - Add nightly tag. 09.01.20: - Add Pi OpenMax support. 02.10.19: - Improve permission fixing for render & dvb devices. 31.07.19: - Add AMD drivers for vaapi support on x86. 13.06.19: - Add Intel drivers for vaapi support on x86. 07.06.19: - Initial release.","title":"jellyfin"},{"location":"images/docker-jellyfin/#linuxserverjellyfin","text":"Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.","title":"linuxserver/jellyfin"},{"location":"images/docker-jellyfin/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-jellyfin/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Jellyfin releases nightly \u2705 Nightly Jellyfin releases","title":"Version Tags"},{"location":"images/docker-jellyfin/#application-setup","text":"Webui can be found at http://:8096 More information can be found on the official documentation here .","title":"Application Setup"},{"location":"images/docker-jellyfin/#hardware-acceleration","text":"","title":"Hardware Acceleration"},{"location":"images/docker-jellyfin/#intel","text":"Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel"},{"location":"images/docker-jellyfin/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the jellyfin docker container.","title":"Nvidia"},{"location":"images/docker-jellyfin/#openmax-raspberry-pi","text":"Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container: --device=/dev/vcsm:/dev/vcsm --device=/dev/vchiq:/dev/vchiq -v /opt/vc/lib:/opt/vc/lib","title":"OpenMAX (Raspberry Pi)"},{"location":"images/docker-jellyfin/#v4l2-raspberry-pi","text":"Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container: --device=/dev/video10:/dev/video10 --device=/dev/video11:/dev/video11 --device=/dev/video12:/dev/video12","title":"V4L2 (Raspberry Pi)"},{"location":"images/docker-jellyfin/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-jellyfin/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : jellyfin : image : lscr.io/linuxserver/jellyfin:latest container_name : jellyfin environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional volumes : - /path/to/library:/config - /path/to/tvseries:/data/tvshows - /path/to/movies:/data/movies ports : - 8096:8096 - 8920:8920 #optional - 7359:7359/udp #optional - 1900:1900/udp #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-jellyfin/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = jellyfin \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e JELLYFIN_PublishedServerUrl = 192 .168.0.5 ` #optional` \\ -p 8096 :8096 \\ -p 8920 :8920 ` #optional` \\ -p 7359 :7359/udp ` #optional` \\ -p 1900 :1900/udp ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvseries:/data/tvshows \\ -v /path/to/movies:/data/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/jellyfin:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-jellyfin/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-jellyfin/#ports-p","text":"Parameter Function 8096 Http webUI. 8920 Optional - Https webUI (you need to set up your own certificate). 7359/udp Optional - Allows clients to discover Jellyfin on the local network. 1900/udp Optional - Service discovery used by DNLA and clients.","title":"Ports (-p)"},{"location":"images/docker-jellyfin/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London). JELLYFIN_PublishedServerUrl=192.168.0.5 Set the autodiscovery response domain or IP address.","title":"Environment Variables (-e)"},{"location":"images/docker-jellyfin/#volume-mappings-v","text":"Volume Function /config Jellyfin data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies , /data/tv , etc.","title":"Volume Mappings (-v)"},{"location":"images/docker-jellyfin/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-jellyfin/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-jellyfin/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-jellyfin/#optional-parameters","text":"The official documentation for ports has additional ports that can provide auto discovery. Service Discovery ( 1900/udp ) - Since client auto-discover would break if this option were configurable, you cannot change this in the settings at this time. DLNA also uses this port and is required to be in the local subnet. Client Discovery ( 7359/udp ) - Allows clients to discover Jellyfin on the local network. A broadcast message to this port with \"Who is Jellyfin Server?\" will get a JSON response that includes the server address, ID, and name. -p 7359:7359/udp \\ -p 1900:1900/udp \\ The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image.","title":"Optional Parameters"},{"location":"images/docker-jellyfin/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-jellyfin/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-jellyfin/#support-info","text":"Shell access whilst the container is running: docker exec -it jellyfin /bin/bash To monitor the logs of the container in realtime: docker logs -f jellyfin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jellyfin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jellyfin:latest","title":"Support Info"},{"location":"images/docker-jellyfin/#versions","text":"07.12.22: - Rebase master to Jammy, migrate to s6v3. 11.06.22: - Switch to upstream repo's ffmpeg5 build. 05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors. 25.12.21: - Fix video device group perms error message. 10.12.21: - Rework readme, disable template sync. 22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper. 23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the bionic tag. 21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW. 20.01.21: - Add Jellyfin Binary Environmentals 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.11.20: - Rebase to Focal, branch off Bionic. 22.07.20: - Ingest releases from Jellyfin repo. 28.04.20: - Replace MMAL/OMX dependency device /dev/vc-mem with /dev/vcsm as the former was not sufficient for raspbian. 11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder. 11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under /config ). 30.01.20: - Add nightly tag. 09.01.20: - Add Pi OpenMax support. 02.10.19: - Improve permission fixing for render & dvb devices. 31.07.19: - Add AMD drivers for vaapi support on x86. 13.06.19: - Add Intel drivers for vaapi support on x86. 07.06.19: - Initial release.","title":"Versions"},{"location":"images/docker-jenkins-builder/","text":"linuxserver/jenkins-builder Expects to run as part of the LSIO CI process. Not for public consumption. Running against remote project docker run --rm \\ -e CONTAINER_NAME = ${ CONTAINER_NAME } \\ -v ${ TEMPDIR } :/ansible/jenkins \\ lscr.io/linuxserver/jenkins-builder:latest Running against local project If you need to test functionality just navigate to the folder with the jenkins-vars.yml and run: docker pull lscr.io/linuxserver/jenkins-builder:latest && \\ docker run --rm \\ -v $( pwd ) :/tmp \\ -e LOCAL = true \\ -e PUID = $( id -u ) -e PGID = $( id -g ) \\ lscr.io/linuxserver/jenkins-builder:latest && \\ rm -rf .jenkins-external Newly generated files (including README.md , Jenkinsfile , issue templates, etc.) will overwrite the existing files in your current working directory. Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-jenkins-builder.git cd docker-jenkins-builder docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/jenkins-builder:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"jenkins-builder"},{"location":"images/docker-jenkins-builder/#linuxserverjenkins-builder","text":"Expects to run as part of the LSIO CI process. Not for public consumption.","title":"linuxserver/jenkins-builder"},{"location":"images/docker-jenkins-builder/#running-against-remote-project","text":"docker run --rm \\ -e CONTAINER_NAME = ${ CONTAINER_NAME } \\ -v ${ TEMPDIR } :/ansible/jenkins \\ lscr.io/linuxserver/jenkins-builder:latest","title":"Running against remote project"},{"location":"images/docker-jenkins-builder/#running-against-local-project","text":"If you need to test functionality just navigate to the folder with the jenkins-vars.yml and run: docker pull lscr.io/linuxserver/jenkins-builder:latest && \\ docker run --rm \\ -v $( pwd ) :/tmp \\ -e LOCAL = true \\ -e PUID = $( id -u ) -e PGID = $( id -g ) \\ lscr.io/linuxserver/jenkins-builder:latest && \\ rm -rf .jenkins-external Newly generated files (including README.md , Jenkinsfile , issue templates, etc.) will overwrite the existing files in your current working directory.","title":"Running against local project"},{"location":"images/docker-jenkins-builder/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-jenkins-builder.git cd docker-jenkins-builder docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/jenkins-builder:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-jenkins-builder/#versions","text":"The following line is only in this repo for loop testing: { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }","title":"Versions"},{"location":"images/docker-kanzi/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/kanzi Kanzi , formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Initial setup Once you start the container for the first time, you need to perform some steps before use. Create an Amazon Developer Account here. Open a terminal in the /config directory of the docker container docker exec -itw /config kanzi bash Enter lexigram login --no-browser true to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter. Edit the file kodi.config according to your local setup and this will be used by the included gunicorn server to respond to requests. Restart the container to automatically deploy the Kanzi skill. Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively. Subfolder location /kanzi { rewrite ^/kanzi/(.*) /$1 break; proxy_pass https://$IP-ADDRESS:8000; proxy_redirect https://$IP-ADDRESS:8000 /kanzi; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $server_name; } Subdomain location / { proxy_pass https://$IP-ADDRESS:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $server_name; } Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : kanzi : image : lscr.io/linuxserver/kanzi:latest container_name : kanzi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - INVOCATION_NAME=kanzi - URL_ENDPOINT=https://server.com/kanzi/ volumes : - :/config ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = kanzi \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e INVOCATION_NAME = kanzi \\ -e URL_ENDPOINT = https://server.com/kanzi/ \\ -p 8000 :8000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/kanzi:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 Application Port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INVOCATION_NAME=kanzi Specify an invocation name for this skill, use either kanzi or kod. URL_ENDPOINT=https://server.com/kanzi/ Specify the URL at which the webserver is reachable either https://kanzi.server.com/ or https://server.com/kanzi/ Note the trailing slash MUST be included. Volume Mappings ( -v ) Volume Function /config Configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it kanzi /bin/bash To monitor the logs of the container in realtime: docker logs -f kanzi Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kanzi Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kanzi:latest Versions 20.06.22: - Deprecate image. 13.04.19: - Initial Release.","title":"kanzi"},{"location":"images/docker-kanzi/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-kanzi/#linuxserverkanzi","text":"Kanzi , formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.","title":"linuxserver/kanzi"},{"location":"images/docker-kanzi/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-kanzi/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-kanzi/#initial-setup","text":"Once you start the container for the first time, you need to perform some steps before use. Create an Amazon Developer Account here. Open a terminal in the /config directory of the docker container docker exec -itw /config kanzi bash Enter lexigram login --no-browser true to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter. Edit the file kodi.config according to your local setup and this will be used by the included gunicorn server to respond to requests. Restart the container to automatically deploy the Kanzi skill. Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively. Subfolder location /kanzi { rewrite ^/kanzi/(.*) /$1 break; proxy_pass https://$IP-ADDRESS:8000; proxy_redirect https://$IP-ADDRESS:8000 /kanzi; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $server_name; } Subdomain location / { proxy_pass https://$IP-ADDRESS:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $server_name; }","title":"Initial setup"},{"location":"images/docker-kanzi/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-kanzi/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-kanzi/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : kanzi : image : lscr.io/linuxserver/kanzi:latest container_name : kanzi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - INVOCATION_NAME=kanzi - URL_ENDPOINT=https://server.com/kanzi/ volumes : - :/config ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-kanzi/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = kanzi \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e INVOCATION_NAME = kanzi \\ -e URL_ENDPOINT = https://server.com/kanzi/ \\ -p 8000 :8000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/kanzi:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-kanzi/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-kanzi/#ports-p","text":"Parameter Function 8000 Application Port","title":"Ports (-p)"},{"location":"images/docker-kanzi/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INVOCATION_NAME=kanzi Specify an invocation name for this skill, use either kanzi or kod. URL_ENDPOINT=https://server.com/kanzi/ Specify the URL at which the webserver is reachable either https://kanzi.server.com/ or https://server.com/kanzi/ Note the trailing slash MUST be included.","title":"Environment Variables (-e)"},{"location":"images/docker-kanzi/#volume-mappings-v","text":"Volume Function /config Configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-kanzi/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-kanzi/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-kanzi/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-kanzi/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-kanzi/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-kanzi/#support-info","text":"Shell access whilst the container is running: docker exec -it kanzi /bin/bash To monitor the logs of the container in realtime: docker logs -f kanzi Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kanzi Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kanzi:latest","title":"Support Info"},{"location":"images/docker-kanzi/#versions","text":"20.06.22: - Deprecate image. 13.04.19: - Initial Release.","title":"Versions"},{"location":"images/docker-kasm/","text":"linuxserver/kasm Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. The rendering of the graphical-based containers is powered by the open-source project KasmVNC . Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Kasm releases develop \u2705 Tip of develop Application Setup This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000. Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443 Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path Access the installation wizard at https:// your ip :3000 and follow the instructions there. Once setup is complete access https:// your ip :443 and login with the credentials you entered during setup. The default users are: admin@kasm.local user@kasm.local Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel. GPU Support During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass -e NVIDIA_VISIBLE_DEVICES=all or --gpus all and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation. Gamepad support In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data . Please see HERE for instructions on enabling gamepad support. Persistant profiles In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles . From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/ , more infomation can be found HERE . Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : kasm : image : lscr.io/linuxserver/kasm:latest container_name : kasm privileged : true environment : - KASM_PORT=443 - TZ=Europe/London - DOCKER_HUB_USERNAME=USER #optional - DOCKER_HUB_PASSWORD=PASS #optional volumes : - /path/to/data:/opt - /path/to/profiles:/profiles #optional - /dev/input:/dev/input #optional - /run/udev/data:/run/udev/data #optional ports : - 3000:3000 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = kasm \\ --privileged \\ -e KASM_PORT = 443 \\ -e TZ = Europe/London \\ -e DOCKER_HUB_USERNAME = USER ` #optional` \\ -e DOCKER_HUB_PASSWORD = PASS ` #optional` \\ -p 3000 :3000 \\ -p 443 :443 \\ -v /path/to/data:/opt \\ -v /path/to/profiles:/profiles ` #optional` \\ -v /dev/input:/dev/input ` #optional` \\ -v /run/udev/data:/run/udev/data ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/kasm:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Kasm Installation wizard. (https) 443 Kasm Workspaces interface. (https) Environment Variables ( -e ) Env Function KASM_PORT=443 Specify the port you bind to the outside for Kasm Workspaces. TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_HUB_USERNAME=USER Optionally specify a DockerHub Username to pull private images. DOCKER_HUB_PASSWORD=PASS Optionally specify a DockerHub password to pull private images. Volume Mappings ( -v ) Volume Function /opt Docker and installation storage. /profiles Optionally specify a path for persistent profile storage. /dev/input Optional for gamepad support. /run/udev/data Optional for gamepad support. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it kasm /bin/bash To monitor the logs of the container in realtime: docker logs -f kasm Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kasm Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kasm:latest Versions 05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads. 23.09.22: - Migrate to s6v3. 02.07.22: - Initial Release.","title":"kasm"},{"location":"images/docker-kasm/#linuxserverkasm","text":"Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections. The rendering of the graphical-based containers is powered by the open-source project KasmVNC .","title":"linuxserver/kasm"},{"location":"images/docker-kasm/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-kasm/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Kasm releases develop \u2705 Tip of develop","title":"Version Tags"},{"location":"images/docker-kasm/#application-setup","text":"This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000. Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443 Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path Access the installation wizard at https:// your ip :3000 and follow the instructions there. Once setup is complete access https:// your ip :443 and login with the credentials you entered during setup. The default users are: admin@kasm.local user@kasm.local Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.","title":"Application Setup"},{"location":"images/docker-kasm/#gpu-support","text":"During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass -e NVIDIA_VISIBLE_DEVICES=all or --gpus all and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation.","title":"GPU Support"},{"location":"images/docker-kasm/#gamepad-support","text":"In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data . Please see HERE for instructions on enabling gamepad support.","title":"Gamepad support"},{"location":"images/docker-kasm/#persistant-profiles","text":"In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles . From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/ , more infomation can be found HERE .","title":"Persistant profiles"},{"location":"images/docker-kasm/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-kasm/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-kasm/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : kasm : image : lscr.io/linuxserver/kasm:latest container_name : kasm privileged : true environment : - KASM_PORT=443 - TZ=Europe/London - DOCKER_HUB_USERNAME=USER #optional - DOCKER_HUB_PASSWORD=PASS #optional volumes : - /path/to/data:/opt - /path/to/profiles:/profiles #optional - /dev/input:/dev/input #optional - /run/udev/data:/run/udev/data #optional ports : - 3000:3000 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-kasm/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = kasm \\ --privileged \\ -e KASM_PORT = 443 \\ -e TZ = Europe/London \\ -e DOCKER_HUB_USERNAME = USER ` #optional` \\ -e DOCKER_HUB_PASSWORD = PASS ` #optional` \\ -p 3000 :3000 \\ -p 443 :443 \\ -v /path/to/data:/opt \\ -v /path/to/profiles:/profiles ` #optional` \\ -v /dev/input:/dev/input ` #optional` \\ -v /run/udev/data:/run/udev/data ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/kasm:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-kasm/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-kasm/#ports-p","text":"Parameter Function 3000 Kasm Installation wizard. (https) 443 Kasm Workspaces interface. (https)","title":"Ports (-p)"},{"location":"images/docker-kasm/#environment-variables-e","text":"Env Function KASM_PORT=443 Specify the port you bind to the outside for Kasm Workspaces. TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_HUB_USERNAME=USER Optionally specify a DockerHub Username to pull private images. DOCKER_HUB_PASSWORD=PASS Optionally specify a DockerHub password to pull private images.","title":"Environment Variables (-e)"},{"location":"images/docker-kasm/#volume-mappings-v","text":"Volume Function /opt Docker and installation storage. /profiles Optionally specify a path for persistent profile storage. /dev/input Optional for gamepad support. /run/udev/data Optional for gamepad support.","title":"Volume Mappings (-v)"},{"location":"images/docker-kasm/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-kasm/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-kasm/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-kasm/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-kasm/#support-info","text":"Shell access whilst the container is running: docker exec -it kasm /bin/bash To monitor the logs of the container in realtime: docker logs -f kasm Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kasm Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kasm:latest","title":"Support Info"},{"location":"images/docker-kasm/#versions","text":"05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads. 23.09.22: - Migrate to s6v3. 02.07.22: - Initial Release.","title":"Versions"},{"location":"images/docker-kdenlive/","text":"linuxserver/kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: * http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false . Hardware Acceleration (x86_64 only) In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for vaapi_device . Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm) vainfo --display drm --device /dev/dri/renderD128 Intel/ATI/AMD To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container. Keyboard Layouts This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : kdenlive : image : lscr.io/linuxserver/kdenlive:latest container_name : kdenlive security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = kdenlive \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/kdenlive:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Kdenlive desktop gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores local files and settings Device Mappings ( --device ) Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only) Miscellaneous Options Parameter Function --shm-size= This might be needed to prevent crashing --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it kdenlive /bin/bash To monitor the logs of the container in realtime: docker logs -f kdenlive Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kdenlive Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kdenlive:latest Versions 16.09.22: - Migrate to s6v3. 09.03.22: - Update seccomp explanation. 07.03.22: - Initial release.","title":"kdenlive"},{"location":"images/docker-kdenlive/#linuxserverkdenlive","text":"Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.","title":"linuxserver/kdenlive"},{"location":"images/docker-kdenlive/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-kdenlive/#application-setup","text":"The application can be accessed at: * http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false .","title":"Application Setup"},{"location":"images/docker-kdenlive/#hardware-acceleration-x86_64-only","text":"In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for vaapi_device . Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm) vainfo --display drm --device /dev/dri/renderD128","title":"Hardware Acceleration (x86_64 only)"},{"location":"images/docker-kdenlive/#intelatiamd","text":"To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel/ATI/AMD"},{"location":"images/docker-kdenlive/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.","title":"Nvidia"},{"location":"images/docker-kdenlive/#keyboard-layouts","text":"This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard","title":"Keyboard Layouts"},{"location":"images/docker-kdenlive/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-kdenlive/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : kdenlive : image : lscr.io/linuxserver/kdenlive:latest container_name : kdenlive security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional volumes : - /path/to/config:/config ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-kdenlive/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = kdenlive \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/kdenlive:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-kdenlive/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-kdenlive/#ports-p","text":"Parameter Function 3000 Kdenlive desktop gui","title":"Ports (-p)"},{"location":"images/docker-kdenlive/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options.","title":"Environment Variables (-e)"},{"location":"images/docker-kdenlive/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores local files and settings","title":"Volume Mappings (-v)"},{"location":"images/docker-kdenlive/#device-mappings-device","text":"Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only)","title":"Device Mappings (--device)"},{"location":"images/docker-kdenlive/#miscellaneous-options","text":"Parameter Function --shm-size= This might be needed to prevent crashing --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration.","title":"Miscellaneous Options"},{"location":"images/docker-kdenlive/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-kdenlive/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-kdenlive/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-kdenlive/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-kdenlive/#support-info","text":"Shell access whilst the container is running: docker exec -it kdenlive /bin/bash To monitor the logs of the container in realtime: docker logs -f kdenlive Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kdenlive Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kdenlive:latest","title":"Support Info"},{"location":"images/docker-kdenlive/#versions","text":"16.09.22: - Migrate to s6v3. 09.03.22: - Update seccomp explanation. 07.03.22: - Initial release.","title":"Versions"},{"location":"images/docker-lazylibrarian/","text":"linuxserver/lazylibrarian Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http://:5299/home , for more information check out Lazylibrarian . Calibredb import 64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to /usr/bin/calibredb ffmpeg By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings > Processing > External Programs by setting the ffmpeg path to ffmpeg . Media folders We have set /books as optional path , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional path if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : lazylibrarian : image : lscr.io/linuxserver/lazylibrarian:latest container_name : lazylibrarian environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional volumes : - /path/to/data:/config - /path/to/downloads/:/downloads - /path/to/data/:/books #optional ports : - 5299:5299 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = lazylibrarian \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DOCKER_MODS = linuxserver/calibre-web:calibre | linuxserver/mods:lazylibrarian-ffmpeg ` #optional` \\ -p 5299 :5299 \\ -v /path/to/data:/config \\ -v /path/to/downloads/:/downloads \\ -v /path/to/data/:/books ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/lazylibrarian:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5299 The port for the LazyLibrarian webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg Allows additional functionality to be added, e.g. the Calibredb import program (optional, more info below) Volume Mappings ( -v ) Volume Function /config LazyLibrarian config /downloads Download location /books Books location Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it lazylibrarian /bin/bash To monitor the logs of the container in realtime: docker logs -f lazylibrarian Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lazylibrarian Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lazylibrarian:latest Versions 07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source. 27.09.22: - Switch to Levenshtein , add cmake as build dep on armhf. 07.05.22: - Rebase to Ubuntu Focal. 22.05.21: - Make the paths clearer to the user, remove optional volume. 17.05.21: - Add linuxserver wheel index. 23.10.19: - Changed gitlab download link. 23.10.19: - Add python module Pillow. 31.07.19: - Add pyopenssl, remove git dependency during build time. 09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 05.03.19: - Added apprise python package. 22.02.19: - Rebasing to alpine 3.9. 10.12.18: - Moved to Pipeline Building 16.08.18: - Rebase to alpine 3.8 05.01.18: - Deprecate cpu_core routine lack of scaling 12.12.17: - Rebase to alpine 3.7 21.07.17: - Internal git pull instead of at runtime 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 30.01.17: - Compile libunrar.so to allow reading of .cbr format files 12.01.17: - Add ghostscript package, allows magazine covers to be created etc 14.10.16: - Add version layer information 03.10.16: - Fix non-persistent settings and make log folder 28.09.16: - Inital Release","title":"lazylibrarian"},{"location":"images/docker-lazylibrarian/#linuxserverlazylibrarian","text":"Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.","title":"linuxserver/lazylibrarian"},{"location":"images/docker-lazylibrarian/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-lazylibrarian/#application-setup","text":"Access the webui at http://:5299/home , for more information check out Lazylibrarian .","title":"Application Setup"},{"location":"images/docker-lazylibrarian/#calibredb-import","text":"64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to /usr/bin/calibredb","title":"Calibredb import"},{"location":"images/docker-lazylibrarian/#ffmpeg","text":"By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings > Processing > External Programs by setting the ffmpeg path to ffmpeg .","title":"ffmpeg"},{"location":"images/docker-lazylibrarian/#media-folders","text":"We have set /books as optional path , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional path if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-lazylibrarian/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-lazylibrarian/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : lazylibrarian : image : lscr.io/linuxserver/lazylibrarian:latest container_name : lazylibrarian environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional volumes : - /path/to/data:/config - /path/to/downloads/:/downloads - /path/to/data/:/books #optional ports : - 5299:5299 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-lazylibrarian/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = lazylibrarian \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DOCKER_MODS = linuxserver/calibre-web:calibre | linuxserver/mods:lazylibrarian-ffmpeg ` #optional` \\ -p 5299 :5299 \\ -v /path/to/data:/config \\ -v /path/to/downloads/:/downloads \\ -v /path/to/data/:/books ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/lazylibrarian:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-lazylibrarian/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-lazylibrarian/#ports-p","text":"Parameter Function 5299 The port for the LazyLibrarian webinterface","title":"Ports (-p)"},{"location":"images/docker-lazylibrarian/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg Allows additional functionality to be added, e.g. the Calibredb import program (optional, more info below)","title":"Environment Variables (-e)"},{"location":"images/docker-lazylibrarian/#volume-mappings-v","text":"Volume Function /config LazyLibrarian config /downloads Download location /books Books location","title":"Volume Mappings (-v)"},{"location":"images/docker-lazylibrarian/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-lazylibrarian/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-lazylibrarian/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-lazylibrarian/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-lazylibrarian/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-lazylibrarian/#support-info","text":"Shell access whilst the container is running: docker exec -it lazylibrarian /bin/bash To monitor the logs of the container in realtime: docker logs -f lazylibrarian Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lazylibrarian Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lazylibrarian:latest","title":"Support Info"},{"location":"images/docker-lazylibrarian/#versions","text":"07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source. 27.09.22: - Switch to Levenshtein , add cmake as build dep on armhf. 07.05.22: - Rebase to Ubuntu Focal. 22.05.21: - Make the paths clearer to the user, remove optional volume. 17.05.21: - Add linuxserver wheel index. 23.10.19: - Changed gitlab download link. 23.10.19: - Add python module Pillow. 31.07.19: - Add pyopenssl, remove git dependency during build time. 09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 05.03.19: - Added apprise python package. 22.02.19: - Rebasing to alpine 3.9. 10.12.18: - Moved to Pipeline Building 16.08.18: - Rebase to alpine 3.8 05.01.18: - Deprecate cpu_core routine lack of scaling 12.12.17: - Rebase to alpine 3.7 21.07.17: - Internal git pull instead of at runtime 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 30.01.17: - Compile libunrar.so to allow reading of .cbr format files 12.01.17: - Add ghostscript package, allows magazine covers to be created etc 14.10.16: - Add version layer information 03.10.16: - Fix non-persistent settings and make log folder 28.09.16: - Inital Release","title":"Versions"},{"location":"images/docker-ldap-auth/","text":"linuxserver/ldap-auth Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012). Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config. Here's a sample config: nginx-ldap-auth.conf . Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined). Also unlike the upstream project, this image serves the login page at /ldaplogin (as well as /login ) to prevent clashes with reverse proxied apps that may also use /login for their internal auth. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ldap-auth : image : lscr.io/linuxserver/ldap-auth:latest container_name : ldap-auth environment : - TZ=Europe/London - FERNETKEY= #optional - CERTFILE= #optional - KEYFILE= #optional ports : - 8888:8888 - 9000:9000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ldap-auth \\ -e TZ = Europe/London \\ -e FERNETKEY = ` #optional` \\ -e CERTFILE = ` #optional` \\ -e KEYFILE = ` #optional` \\ -p 8888 :8888 \\ -p 9000 :9000 \\ --restart unless-stopped \\ lscr.io/linuxserver/ldap-auth:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8888 the port for ldap auth daemon 9000 the port for ldap login page Environment Variables ( -e ) Env Function TZ=Europe/London Specify a timezone to use EG Europe/London FERNETKEY= Optionally define a custom fernet key, has to be base64-encoded 32-byte (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications) CERTFILE= Point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon KEYFILE= Point this to the private key file, matching the certificate file referred to in CERTFILE Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ldap-auth /bin/bash To monitor the logs of the container in realtime: docker logs -f ldap-auth Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ldap-auth Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ldap-auth:latest Versions 19.09.22: - Rebase to alpine 3.17. 19.09.22: - Rebase to alpine 3.15. 14.05.21: - Add linuxserver wheel index. 12.02.21: - Clean up cargo/rust cache. 10.02.21: - Rebasing to alpine 3.13. 08.09.20: - Set form action correctly. 30.07.20: - Fix bug related to unset optional CERTFILE and KEYFILE vars. 27.07.20: - Add support for HTTP over SSL (HTTPS). 21.07.20: - Add support for optional user defined fernet key. 02.06.20: - Rebasing to alpine 3.12, serve login page at /ldaplogin as well as /login , to prevent clashes with reverese proxied apps. 17.05.20: - Add support for self-signed CA certs. 20.02.20: - Switch to python3. 19.12.19: - Rebasing to alpine 3.11. 01.07.19: - Fall back to base64 encoding when basic http auth is used. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 18.09.18: - Update pip 14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params 11.08.18: - Initial release.","title":"ldap-auth"},{"location":"images/docker-ldap-auth/#linuxserverldap-auth","text":"Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).","title":"linuxserver/ldap-auth"},{"location":"images/docker-ldap-auth/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ldap-auth/#application-setup","text":"This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config. Here's a sample config: nginx-ldap-auth.conf . Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined). Also unlike the upstream project, this image serves the login page at /ldaplogin (as well as /login ) to prevent clashes with reverse proxied apps that may also use /login for their internal auth.","title":"Application Setup"},{"location":"images/docker-ldap-auth/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ldap-auth/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ldap-auth : image : lscr.io/linuxserver/ldap-auth:latest container_name : ldap-auth environment : - TZ=Europe/London - FERNETKEY= #optional - CERTFILE= #optional - KEYFILE= #optional ports : - 8888:8888 - 9000:9000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ldap-auth/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ldap-auth \\ -e TZ = Europe/London \\ -e FERNETKEY = ` #optional` \\ -e CERTFILE = ` #optional` \\ -e KEYFILE = ` #optional` \\ -p 8888 :8888 \\ -p 9000 :9000 \\ --restart unless-stopped \\ lscr.io/linuxserver/ldap-auth:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-ldap-auth/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ldap-auth/#ports-p","text":"Parameter Function 8888 the port for ldap auth daemon 9000 the port for ldap login page","title":"Ports (-p)"},{"location":"images/docker-ldap-auth/#environment-variables-e","text":"Env Function TZ=Europe/London Specify a timezone to use EG Europe/London FERNETKEY= Optionally define a custom fernet key, has to be base64-encoded 32-byte (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications) CERTFILE= Point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon KEYFILE= Point this to the private key file, matching the certificate file referred to in CERTFILE","title":"Environment Variables (-e)"},{"location":"images/docker-ldap-auth/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-ldap-auth/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ldap-auth/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ldap-auth/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ldap-auth/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ldap-auth/#support-info","text":"Shell access whilst the container is running: docker exec -it ldap-auth /bin/bash To monitor the logs of the container in realtime: docker logs -f ldap-auth Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ldap-auth Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ldap-auth:latest","title":"Support Info"},{"location":"images/docker-ldap-auth/#versions","text":"19.09.22: - Rebase to alpine 3.17. 19.09.22: - Rebase to alpine 3.15. 14.05.21: - Add linuxserver wheel index. 12.02.21: - Clean up cargo/rust cache. 10.02.21: - Rebasing to alpine 3.13. 08.09.20: - Set form action correctly. 30.07.20: - Fix bug related to unset optional CERTFILE and KEYFILE vars. 27.07.20: - Add support for HTTP over SSL (HTTPS). 21.07.20: - Add support for optional user defined fernet key. 02.06.20: - Rebasing to alpine 3.12, serve login page at /ldaplogin as well as /login , to prevent clashes with reverese proxied apps. 17.05.20: - Add support for self-signed CA certs. 20.02.20: - Switch to python3. 19.12.19: - Rebasing to alpine 3.11. 01.07.19: - Fall back to base64 encoding when basic http auth is used. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 18.09.18: - Update pip 14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params 11.08.18: - Initial release.","title":"Versions"},{"location":"images/docker-letsencrypt/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub . This is a breaking change and you need to manually update. Apologies for the the disruption. Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image This repository will be archived and builds for the image will no longer be created at the end of 2020 linuxserver/letsencrypt SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container. docker docker create \\ --name=swag \\ --cap-add=NET_ADMIN \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e URL=yourdomain.url \\ -e SUBDOMAINS=www, \\ -e VALIDATION=http \\ -e DNSPLUGIN=cloudflare `#optional` \\ -e PROPAGATION= `#optional` \\ -e DUCKDNSTOKEN= `#optional` \\ -e EMAIL= `#optional` \\ -e ONLY_SUBDOMAINS=false `#optional` \\ -e EXTRA_DOMAINS= `#optional` \\ -e STAGING=false `#optional` \\ -p 443:443 \\ -p 80:80 `#optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ linuxserver/letsencrypt docker-compose Compatible with docker-compose v2 schemas. --- version: \"2.1\" services: swag: image: linuxserver/letsencrypt container_name: swag cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - SUBDOMAINS=www, - VALIDATION=http - DNSPLUGIN=cloudflare #optional - PROPAGATION= #optional - DUCKDNSTOKEN= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes: - /path/to/appdata/config:/config ports: - 443:443 - 80:80 #optional restart: unless-stopped Parameters Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 443 Https port -p 80 Http port (required for http validation and http -> https redirect) -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London. -e URL=yourdomain.url Top url you have control over ( customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). -e SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud . For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns and duckdns validation only) -e VALIDATION=http Certbot validation method to use, options are http , dns or duckdns ( dns method also requires DNSPLUGIN variable set) ( duckdns method requires DUCKDNSTOKEN variable set, and the SUBDOMAINS variable must be either empty or set to wildcard ). -e DNSPLUGIN=cloudflare Required if VALIDATION is set to dns . Options are aliyun , cloudflare , cloudxns , cpanel , digitalocean , dnsimple , dnsmadeeasy , domeneshop , gandi , google , inwx , linode , luadns , nsone , ovh , rfc2136 , route53 and transip . Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf . -e PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. -e DUCKDNSTOKEN= Required if VALIDATION is set to duckdns . Retrieve your token from https://www.duckdns.org -e EMAIL= Optional e-mail address used for cert expiration notifications. -e ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true -e EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org -e STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. -v /config All the config files including the webroot reside here. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Validation and initial setup Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.). For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80 For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\" Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\" For duckdns validation, either leave the SUBDOMAINS variable empty or set it to wildcard , and set the DUCKDNSTOKEN variable with your duckdns token. Due to a limitation of duckdns, the resulting cert will only cover either main subdomain (ie. yoursubdomain.duckdns.org ), or sub-subdomains (ie. *.yoursubdomain.duckdns.org ), but will not both at the same time. You can use our duckdns image to update your IP on duckdns.org. --cap-add=NET_ADMIN is required for fail2ban to modify iptables If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default ). Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances. Security and password protection The container detects changes to url and subdomains, revokes existing certs and generates new ones during start. The container provides a pre-generated 4096-bit dhparams.pem (rotated weekly via Jenkins job ) for new instances, however you may generate your own by running docker exec letsencrypt openssl dhparam -out /config/nginx/dhparams.pem 4096 WARNING: This takes a very long time If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it letsencrypt htpasswd -c /config/nginx/.htpasswd You can add multiple user:pass to .htpasswd . For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server. Site config and reverse proxy The default site config resides at /config/nginx/site-confs/default . Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start. Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo . If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines If you wish to redirect http to https, you must expose port 80 Using certs in other containers This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc. To use these certs in other containers, do either of the following: (Easier) Mount the container's config folder in other containers (ie. -v /path-to-le-config:/le-ssl ) and in the other containers, use the cert location /le-ssl/keys/letsencrypt/ (More secure) Mount the letsencrypt folder etc/letsencrypt that resides under /config in other containers (ie. -v /path-to-le-config/etc/letsencrypt:/le-ssl ) and in the other containers, use the cert location /le-ssl/live// (This is more secure because the first method shares the entire letsencrypt config folder with other containers, including the www files, whereas the second method only shares the ssl certs) These certs include: cert.pem , chain.pem , fullchain.pem and privkey.pem , which are generated by Let's Encrypt and used by nginx and various other apps privkey.pfx , a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password) priv-fullchain-bundle.pem , a pem cert that bundles the private key and the fullchain, used by apps like ZNC Using fail2ban This container includes fail2ban set up with 3 jails by default: nginx-http-auth nginx-badbots nginx-botsearch To enable or disable other jails, modify the file /config/fail2ban/jail.local To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local ) You can check which jails are active via docker exec -it swag fail2ban-client status You can check the status of a specific jail via docker exec -it swag fail2ban-client status You can unban an IP via docker exec -it swag fail2ban-client set unbanip A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above. Support Info Shell access whilst the container is running: docker exec -it swag /bin/bash To monitor the logs of the container in realtime: docker logs -f swag container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/letsencrypt Updating Info Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers: Via Docker Run/Create Update the image: docker pull linuxserver/letsencrypt Stop the running container: docker stop swag Delete the container: docker rm swag Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved) Start the new container: docker start swag You can also remove the old dangling images: docker image prune Via Docker Compose Update all images: docker-compose pull or update a single image: docker-compose pull swag Let compose update all containers as necessary: docker-compose up -d or update a single container: docker-compose up -d swag You can also remove the old dangling images: docker image prune Via Watchtower auto-updater (especially useful if you don't remember the original parameters) Pull the latest image at its tag and replace it with the same env variables in one run: docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ containrrr/watchtower \\ --run-once swag Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose. You can also remove the old dangling images: docker image prune Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-letsencrypt.git cd docker-letsencrypt docker build \\ --no-cache \\ --pull \\ -t linuxserver/letsencrypt:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions 28.07.20: - Start transition to new name, SWAG. 17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate DHLEVEL param. 01.06.20: - Rebasing to alpine 3.12, change ldap login address to /ldaplogin to avoid clashes (existing users need to manually update). 31.05.20: - Tweak Authelia confs (existing users can delete authelia-server.conf and authelia-location.conf , and restart to update). 23.05.20: - Add support for Authelia. 15.05.20: - Remove php7-pecl-imagick due to upstream issues. Add support for Geoip2 auto db retrieval. 10.05.20: - Added support for fail2ban deny statements. 04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of whois to replace the built-in busybox version. Update jail.local to change default fail2ban ban action to more widely supported iptables-allports . 13.04.20: - Update cloudflare.ini with token info. 11.03.20: - Add php7-sodium. 06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am). 05.03.20: - Use port and proto upstream variables for ldap and default sample confs. 24.02.20: - Remove world/group read permissions in dns-conf. 23.02.20: - Add aliyun dns validation plugin. 28.01.20: - Deprecate tls-sni validation method, remove from docs. 27.01.20: - Add support for cpanel dns validation. 10.01.20: - Add support for domeneshop dns validation. 07.01.20: - Update ciphers from Mozilla ssl-config recommendations. 01.01.20: - Add support for gandi dns validation. 31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added. 19.12.19: - Rebasing to alpine 3.11. 19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors. 18.12.19: - Add php7-imap and php7-pecl-apcu. 11.12.19: - Fix Google Cloud DNS to use .json file for authentication. 20.11.19: - Fix cryptography version mismatch due to pip issue. 17.11.19: - Add php7-pdo_odbc. 17.11.19: - Add transip dns validation plugin. 27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete /config/nginx/nginx.conf and restart the container). 26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch. 24.10.19: - Add php7-pecl-imagick. 23.10.19: - Update Host header in proxy.conf to fix CSRF issues. 12.10.19: - Add linode dns validation plugin. 23.09.19: - Move GeoIP2 db to /config to make it persistent. 14.08.19: - Add inwx dns validation plugin. 06.08.19: - Add php7-ftp. 04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc. 02.08.19: - Add php7-ldap, remove geoip v1(deprecated). 01.08.19: - Mark https redirect block as default_server (effective only for new installs). 31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist. 30.07.19: - Support main domain via duckdns validation. 29.07.19: - Enable http to https redirect by default (effective only for new installs). 01.07.19: - Patch geoip2 module until upstream is fixed. 30.06.19: - Add geoip2 module. 28.06.19: - Rebasing to alpine 3.10. 19.06.19: - Set resolver to docker dns in ssl.conf. 29.05.19: - Compensate for changes to the reverse-proxy-confs repo. 26.05.19: - Remove botocore/urllib patch. 08.05.19: - Remove default.conf when nginx is upgraded in downstream image. 30.04.19: - Add php-redis. 12.04.19: - Rebase aarch64 image to 3.9. 25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Add TLSv1.3 to ssl.conf. 02.03.19: - Add php intl and posix modules. 27.02.19: - Add gnupg package. 22.02.19: - Rebase to alpine 3.9. 03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached. 28.01.19: - Add pipeline logic and multi arch. 21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update). 09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update). 30.12.18: - Fix bundle key generation. 19.12.18: - Add ipv6 and http/2 support to default site config. 08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented feature of up to 8 minute random delay. 03.12.18: - Fix silly bug resetting the duckdns token. 02.12.18: - Add dns validation support for ovh. 20.11.18: - Externalize reverse proxy confs to separate github repo linuxserver/reverse-proxy-confs , update baseimage packages during build 19.11.18: - Add php opcache package. 12.11.18: - Add support for duckdns wildcard certs via dns validation 31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf) 02.10.18: - Fix fail2ban instructions and logrotate conf 11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto) 04.09.18: - Linting fixes. 30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan) 21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing 08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs 25.07.18: - Add subdomain proxy conf for syncthing 23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf. 31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik) 30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik) 18.05.18: - Add more info on certs and unraid reverse proxy config 11.05.18: - Add php pgsql support 24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps 20.04.18: - Add standardized optional reverse proxy conf files 19.04.18: - Bind memcached to localhost only, add php7-sqlite3 08.04.18: - Fix renewal hooks 29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight) 29.03.18: - Fix staging for v2 api 13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME. 21.02.18: - Reduce shellcheck directives by renaming secondary variables 20.02.18: - Sanitize variables, increase log verbosity 01.02.18: - Big changes. VALIDATION parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL is deprecated. STAGING parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf 13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting /config/fail2ban/action.d/iptables-common.local and restarting the container after updating the image 11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt) 10.01.18: - Add option for http validation on port 80 05.01.18: - Rebase to alpine 3.7 04.11.17: - Add php7 soap module 31.10.17: - Add php7 exif and xmlreader modules 25.09.17: - Manage fail2ban via s6 24.09.17: - Add memcached service 01.09.17: - --privileged is no longer required as long as --cap-add=NET_ADMIN is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules 31.08.17: - Add php7-phar 14.07.17: - Enable modules dynamically in nginx.conf 06.07.17: - Add support for multiple domains (thanks @oznu) 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf 16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme 05.06.17: - Add php7-bz2 27.05.17: - Rebase to alpine 3.6. 03.05.17: - Fix log permissions. 18.04.17: - Add php7-sockets, update fail2ban filter and action defaults 27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite 21.02.17: - Add php7-xml 10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules 13.01.17: - Add php5-ctype and php5-openssl 04.01.17: - Add php5-mysqli and php5-pdo_mysql 22.11.16: - Add gd and mcrypt packages 21.11.16: - Add curl package 07.11.16: - Initial Release","title":"letsencrypt"},{"location":"images/docker-letsencrypt/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-letsencrypt/#important-notice-this-image-has-been-deprecated-and-the-project-is-moved-to-a-new-repo","text":"Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub . This is a breaking change and you need to manually update. Apologies for the the disruption. Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image","title":"IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO"},{"location":"images/docker-letsencrypt/#this-repository-will-be-archived-and-builds-for-the-image-will-no-longer-be-created-at-the-end-of-2020","text":"","title":"This repository will be archived and builds for the image will no longer be created at the end of 2020"},{"location":"images/docker-letsencrypt/#linuxserverletsencrypt","text":"SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention.","title":"linuxserver/letsencrypt"},{"location":"images/docker-letsencrypt/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-letsencrypt/#usage","text":"Here are some example snippets to help you get started creating a container.","title":"Usage"},{"location":"images/docker-letsencrypt/#docker","text":"docker create \\ --name=swag \\ --cap-add=NET_ADMIN \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e URL=yourdomain.url \\ -e SUBDOMAINS=www, \\ -e VALIDATION=http \\ -e DNSPLUGIN=cloudflare `#optional` \\ -e PROPAGATION= `#optional` \\ -e DUCKDNSTOKEN= `#optional` \\ -e EMAIL= `#optional` \\ -e ONLY_SUBDOMAINS=false `#optional` \\ -e EXTRA_DOMAINS= `#optional` \\ -e STAGING=false `#optional` \\ -p 443:443 \\ -p 80:80 `#optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ linuxserver/letsencrypt","title":"docker"},{"location":"images/docker-letsencrypt/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version: \"2.1\" services: swag: image: linuxserver/letsencrypt container_name: swag cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - SUBDOMAINS=www, - VALIDATION=http - DNSPLUGIN=cloudflare #optional - PROPAGATION= #optional - DUCKDNSTOKEN= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes: - /path/to/appdata/config:/config ports: - 443:443 - 80:80 #optional restart: unless-stopped","title":"docker-compose"},{"location":"images/docker-letsencrypt/#parameters","text":"Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 443 Https port -p 80 Http port (required for http validation and http -> https redirect) -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London. -e URL=yourdomain.url Top url you have control over ( customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). -e SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud . For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns and duckdns validation only) -e VALIDATION=http Certbot validation method to use, options are http , dns or duckdns ( dns method also requires DNSPLUGIN variable set) ( duckdns method requires DUCKDNSTOKEN variable set, and the SUBDOMAINS variable must be either empty or set to wildcard ). -e DNSPLUGIN=cloudflare Required if VALIDATION is set to dns . Options are aliyun , cloudflare , cloudxns , cpanel , digitalocean , dnsimple , dnsmadeeasy , domeneshop , gandi , google , inwx , linode , luadns , nsone , ovh , rfc2136 , route53 and transip . Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf . -e PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. -e DUCKDNSTOKEN= Required if VALIDATION is set to duckdns . Retrieve your token from https://www.duckdns.org -e EMAIL= Optional e-mail address used for cert expiration notifications. -e ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true -e EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org -e STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. -v /config All the config files including the webroot reside here.","title":"Parameters"},{"location":"images/docker-letsencrypt/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-letsencrypt/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-letsencrypt/#user-group-identifiers","text":"When using volumes ( -v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-letsencrypt/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-letsencrypt/#validation-and-initial-setup","text":"Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.). For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80 For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\" Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\" For duckdns validation, either leave the SUBDOMAINS variable empty or set it to wildcard , and set the DUCKDNSTOKEN variable with your duckdns token. Due to a limitation of duckdns, the resulting cert will only cover either main subdomain (ie. yoursubdomain.duckdns.org ), or sub-subdomains (ie. *.yoursubdomain.duckdns.org ), but will not both at the same time. You can use our duckdns image to update your IP on duckdns.org. --cap-add=NET_ADMIN is required for fail2ban to modify iptables If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default ). Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.","title":"Validation and initial setup"},{"location":"images/docker-letsencrypt/#security-and-password-protection","text":"The container detects changes to url and subdomains, revokes existing certs and generates new ones during start. The container provides a pre-generated 4096-bit dhparams.pem (rotated weekly via Jenkins job ) for new instances, however you may generate your own by running docker exec letsencrypt openssl dhparam -out /config/nginx/dhparams.pem 4096 WARNING: This takes a very long time If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it letsencrypt htpasswd -c /config/nginx/.htpasswd You can add multiple user:pass to .htpasswd . For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.","title":"Security and password protection"},{"location":"images/docker-letsencrypt/#site-config-and-reverse-proxy","text":"The default site config resides at /config/nginx/site-confs/default . Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start. Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo . If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines If you wish to redirect http to https, you must expose port 80","title":"Site config and reverse proxy"},{"location":"images/docker-letsencrypt/#using-certs-in-other-containers","text":"This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc. To use these certs in other containers, do either of the following: (Easier) Mount the container's config folder in other containers (ie. -v /path-to-le-config:/le-ssl ) and in the other containers, use the cert location /le-ssl/keys/letsencrypt/ (More secure) Mount the letsencrypt folder etc/letsencrypt that resides under /config in other containers (ie. -v /path-to-le-config/etc/letsencrypt:/le-ssl ) and in the other containers, use the cert location /le-ssl/live// (This is more secure because the first method shares the entire letsencrypt config folder with other containers, including the www files, whereas the second method only shares the ssl certs) These certs include: cert.pem , chain.pem , fullchain.pem and privkey.pem , which are generated by Let's Encrypt and used by nginx and various other apps privkey.pfx , a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password) priv-fullchain-bundle.pem , a pem cert that bundles the private key and the fullchain, used by apps like ZNC","title":"Using certs in other containers"},{"location":"images/docker-letsencrypt/#using-fail2ban","text":"This container includes fail2ban set up with 3 jails by default: nginx-http-auth nginx-badbots nginx-botsearch To enable or disable other jails, modify the file /config/fail2ban/jail.local To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local ) You can check which jails are active via docker exec -it swag fail2ban-client status You can check the status of a specific jail via docker exec -it swag fail2ban-client status You can unban an IP via docker exec -it swag fail2ban-client set unbanip A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands","title":"Using fail2ban"},{"location":"images/docker-letsencrypt/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.","title":"Docker Mods"},{"location":"images/docker-letsencrypt/#support-info","text":"Shell access whilst the container is running: docker exec -it swag /bin/bash To monitor the logs of the container in realtime: docker logs -f swag container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/letsencrypt","title":"Support Info"},{"location":"images/docker-letsencrypt/#updating-info","text":"Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers:","title":"Updating Info"},{"location":"images/docker-letsencrypt/#via-docker-runcreate","text":"Update the image: docker pull linuxserver/letsencrypt Stop the running container: docker stop swag Delete the container: docker rm swag Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved) Start the new container: docker start swag You can also remove the old dangling images: docker image prune","title":"Via Docker Run/Create"},{"location":"images/docker-letsencrypt/#via-docker-compose","text":"Update all images: docker-compose pull or update a single image: docker-compose pull swag Let compose update all containers as necessary: docker-compose up -d or update a single container: docker-compose up -d swag You can also remove the old dangling images: docker image prune","title":"Via Docker Compose"},{"location":"images/docker-letsencrypt/#via-watchtower-auto-updater-especially-useful-if-you-dont-remember-the-original-parameters","text":"Pull the latest image at its tag and replace it with the same env variables in one run: docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ containrrr/watchtower \\ --run-once swag Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose. You can also remove the old dangling images: docker image prune","title":"Via Watchtower auto-updater (especially useful if you don't remember the original parameters)"},{"location":"images/docker-letsencrypt/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-letsencrypt.git cd docker-letsencrypt docker build \\ --no-cache \\ --pull \\ -t linuxserver/letsencrypt:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-letsencrypt/#versions","text":"28.07.20: - Start transition to new name, SWAG. 17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate DHLEVEL param. 01.06.20: - Rebasing to alpine 3.12, change ldap login address to /ldaplogin to avoid clashes (existing users need to manually update). 31.05.20: - Tweak Authelia confs (existing users can delete authelia-server.conf and authelia-location.conf , and restart to update). 23.05.20: - Add support for Authelia. 15.05.20: - Remove php7-pecl-imagick due to upstream issues. Add support for Geoip2 auto db retrieval. 10.05.20: - Added support for fail2ban deny statements. 04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of whois to replace the built-in busybox version. Update jail.local to change default fail2ban ban action to more widely supported iptables-allports . 13.04.20: - Update cloudflare.ini with token info. 11.03.20: - Add php7-sodium. 06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am). 05.03.20: - Use port and proto upstream variables for ldap and default sample confs. 24.02.20: - Remove world/group read permissions in dns-conf. 23.02.20: - Add aliyun dns validation plugin. 28.01.20: - Deprecate tls-sni validation method, remove from docs. 27.01.20: - Add support for cpanel dns validation. 10.01.20: - Add support for domeneshop dns validation. 07.01.20: - Update ciphers from Mozilla ssl-config recommendations. 01.01.20: - Add support for gandi dns validation. 31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added. 19.12.19: - Rebasing to alpine 3.11. 19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors. 18.12.19: - Add php7-imap and php7-pecl-apcu. 11.12.19: - Fix Google Cloud DNS to use .json file for authentication. 20.11.19: - Fix cryptography version mismatch due to pip issue. 17.11.19: - Add php7-pdo_odbc. 17.11.19: - Add transip dns validation plugin. 27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete /config/nginx/nginx.conf and restart the container). 26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch. 24.10.19: - Add php7-pecl-imagick. 23.10.19: - Update Host header in proxy.conf to fix CSRF issues. 12.10.19: - Add linode dns validation plugin. 23.09.19: - Move GeoIP2 db to /config to make it persistent. 14.08.19: - Add inwx dns validation plugin. 06.08.19: - Add php7-ftp. 04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc. 02.08.19: - Add php7-ldap, remove geoip v1(deprecated). 01.08.19: - Mark https redirect block as default_server (effective only for new installs). 31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist. 30.07.19: - Support main domain via duckdns validation. 29.07.19: - Enable http to https redirect by default (effective only for new installs). 01.07.19: - Patch geoip2 module until upstream is fixed. 30.06.19: - Add geoip2 module. 28.06.19: - Rebasing to alpine 3.10. 19.06.19: - Set resolver to docker dns in ssl.conf. 29.05.19: - Compensate for changes to the reverse-proxy-confs repo. 26.05.19: - Remove botocore/urllib patch. 08.05.19: - Remove default.conf when nginx is upgraded in downstream image. 30.04.19: - Add php-redis. 12.04.19: - Rebase aarch64 image to 3.9. 25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.03.19: - Add TLSv1.3 to ssl.conf. 02.03.19: - Add php intl and posix modules. 27.02.19: - Add gnupg package. 22.02.19: - Rebase to alpine 3.9. 03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached. 28.01.19: - Add pipeline logic and multi arch. 21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update). 09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update). 30.12.18: - Fix bundle key generation. 19.12.18: - Add ipv6 and http/2 support to default site config. 08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented feature of up to 8 minute random delay. 03.12.18: - Fix silly bug resetting the duckdns token. 02.12.18: - Add dns validation support for ovh. 20.11.18: - Externalize reverse proxy confs to separate github repo linuxserver/reverse-proxy-confs , update baseimage packages during build 19.11.18: - Add php opcache package. 12.11.18: - Add support for duckdns wildcard certs via dns validation 31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf) 02.10.18: - Fix fail2ban instructions and logrotate conf 11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto) 04.09.18: - Linting fixes. 30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan) 21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing 08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs 25.07.18: - Add subdomain proxy conf for syncthing 23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf. 31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik) 30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik) 18.05.18: - Add more info on certs and unraid reverse proxy config 11.05.18: - Add php pgsql support 24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps 20.04.18: - Add standardized optional reverse proxy conf files 19.04.18: - Bind memcached to localhost only, add php7-sqlite3 08.04.18: - Fix renewal hooks 29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight) 29.03.18: - Fix staging for v2 api 13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME. 21.02.18: - Reduce shellcheck directives by renaming secondary variables 20.02.18: - Sanitize variables, increase log verbosity 01.02.18: - Big changes. VALIDATION parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL is deprecated. STAGING parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf 13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting /config/fail2ban/action.d/iptables-common.local and restarting the container after updating the image 11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt) 10.01.18: - Add option for http validation on port 80 05.01.18: - Rebase to alpine 3.7 04.11.17: - Add php7 soap module 31.10.17: - Add php7 exif and xmlreader modules 25.09.17: - Manage fail2ban via s6 24.09.17: - Add memcached service 01.09.17: - --privileged is no longer required as long as --cap-add=NET_ADMIN is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules 31.08.17: - Add php7-phar 14.07.17: - Enable modules dynamically in nginx.conf 06.07.17: - Add support for multiple domains (thanks @oznu) 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf 16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme 05.06.17: - Add php7-bz2 27.05.17: - Rebase to alpine 3.6. 03.05.17: - Fix log permissions. 18.04.17: - Add php7-sockets, update fail2ban filter and action defaults 27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite 21.02.17: - Add php7-xml 10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules 13.01.17: - Add php5-ctype and php5-openssl 04.01.17: - Add php5-mysqli and php5-pdo_mysql 22.11.16: - Add gd and mcrypt packages 21.11.16: - Add curl package 07.11.16: - Initial Release","title":"Versions"},{"location":"images/docker-libreoffice/","text":"linuxserver/libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : libreoffice : image : lscr.io/linuxserver/libreoffice:latest container_name : libreoffice security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = libreoffice \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/libreoffice:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 LibreOffice desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings and documents Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it libreoffice /bin/bash To monitor the logs of the container in realtime: docker logs -f libreoffice Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libreoffice Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/libreoffice:latest Versions 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 05.04.21: - Initial release.","title":"libreoffice"},{"location":"images/docker-libreoffice/#linuxserverlibreoffice","text":"LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.","title":"linuxserver/libreoffice"},{"location":"images/docker-libreoffice/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-libreoffice/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-libreoffice/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-libreoffice/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : libreoffice : image : lscr.io/linuxserver/libreoffice:latest container_name : libreoffice security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-libreoffice/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = libreoffice \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/libreoffice:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-libreoffice/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-libreoffice/#ports-p","text":"Parameter Function 3000 LibreOffice desktop gui.","title":"Ports (-p)"},{"location":"images/docker-libreoffice/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-libreoffice/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings and documents","title":"Volume Mappings (-v)"},{"location":"images/docker-libreoffice/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-libreoffice/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-libreoffice/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-libreoffice/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-libreoffice/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-libreoffice/#support-info","text":"Shell access whilst the container is running: docker exec -it libreoffice /bin/bash To monitor the logs of the container in realtime: docker logs -f libreoffice Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libreoffice Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/libreoffice:latest","title":"Support Info"},{"location":"images/docker-libreoffice/#versions","text":"21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 05.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-libresonic/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic linuxserver/libresonic Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=libresonic \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e CONTEXT_PATH= `#optional` \\ -p 4040:4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media `#optional` \\ --restart unless-stopped \\ linuxserver/libresonic docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : libresonic : image : linuxserver/libresonic container_name : libresonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional volumes : - :/config - :/music - :/playlists - :/podcasts volumes : - :/media #optional ports : - 4040:4040 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4040 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups. Volume Mappings ( -v ) Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Access WebUI at :4040 . Default user/pass is admin/admin Support Info Shell access whilst the container is running: docker exec -it libresonic /bin/bash To monitor the logs of the container in realtime: docker logs -f libresonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libresonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/libresonic Versions 24.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.01.19: - Pull war from github, adding pipeline multi arch builds. 05.01.19: - Linting fixes. 27.08.18: - Rebase to ubuntu bionic. 12.12.17: - Rebase to alpine 3.7. 11.07.17: - Rebase to alpine 3.6. 12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts). 08.02.17: - Rebase to alpine 3.5. 04.12.16: - Update jetty runner version. 29.11.16: - Switch to building from release tags following v6.1 stable release. 17.11.16: - Initial Release.","title":"libresonic"},{"location":"images/docker-libresonic/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic","title":"DEPRECATION NOTICE"},{"location":"images/docker-libresonic/#linuxserverlibresonic","text":"Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.","title":"linuxserver/libresonic"},{"location":"images/docker-libresonic/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-libresonic/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-libresonic/#docker","text":"docker create \\ --name=libresonic \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e CONTEXT_PATH= `#optional` \\ -p 4040:4040 \\ -v :/config \\ -v :/music \\ -v :/playlists \\ -v :/podcasts \\ -v :/media `#optional` \\ --restart unless-stopped \\ linuxserver/libresonic","title":"docker"},{"location":"images/docker-libresonic/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : libresonic : image : linuxserver/libresonic container_name : libresonic environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONTEXT_PATH= #optional volumes : - :/config - :/music - :/playlists - :/podcasts volumes : - :/media #optional ports : - 4040:4040 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-libresonic/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-libresonic/#ports-p","text":"Parameter Function 4040 WebUI","title":"Ports (-p)"},{"location":"images/docker-libresonic/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH= For setting url-base in reverse proxy setups.","title":"Environment Variables (-e)"},{"location":"images/docker-libresonic/#volume-mappings-v","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media.","title":"Volume Mappings (-v)"},{"location":"images/docker-libresonic/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-libresonic/#application-setup","text":"Access WebUI at :4040 . Default user/pass is admin/admin","title":"Application Setup"},{"location":"images/docker-libresonic/#support-info","text":"Shell access whilst the container is running: docker exec -it libresonic /bin/bash To monitor the logs of the container in realtime: docker logs -f libresonic Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libresonic Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/libresonic","title":"Support Info"},{"location":"images/docker-libresonic/#versions","text":"24.03.19: - Switching to new Base images, shift to arm32v7 tag. 15.01.19: - Pull war from github, adding pipeline multi arch builds. 05.01.19: - Linting fixes. 27.08.18: - Rebase to ubuntu bionic. 12.12.17: - Rebase to alpine 3.7. 11.07.17: - Rebase to alpine 3.6. 12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts). 08.02.17: - Rebase to alpine 3.5. 04.12.16: - Update jetty runner version. 29.11.16: - Switch to building from release tags following v6.1 stable release. 17.11.16: - Initial Release.","title":"Versions"},{"location":"images/docker-librespeed/","text":"linuxserver/librespeed Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the speedtest webui at http://SERVERIP . The results database can be accessed at http://SERVERIP/results/stats.php with the password set. The default template used is based on example-singleServer-full.html . However, all templates are provided for reference at /config/www/ . Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default. You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults. If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : librespeed : image : lscr.io/linuxserver/librespeed:latest container_name : librespeed environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD=PASSWORD - CUSTOM_RESULTS=false #optional - DB_TYPE=sqlite #optional - DB_NAME=DB_NAME #optional - DB_HOSTNAME=DB_HOSTNAME #optional - DB_USERNAME=DB_USERNAME #optional - DB_PASSWORD=DB_PASSWORD #optional - DB_PORT=DB_PORT #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = librespeed \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = PASSWORD \\ -e CUSTOM_RESULTS = false ` #optional` \\ -e DB_TYPE = sqlite ` #optional` \\ -e DB_NAME = DB_NAME ` #optional` \\ -e DB_HOSTNAME = DB_HOSTNAME ` #optional` \\ -e DB_USERNAME = DB_USERNAME ` #optional` \\ -e DB_PASSWORD = DB_PASSWORD ` #optional` \\ -e DB_PORT = DB_PORT ` #optional` \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/librespeed:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=PASSWORD Set the password for the results database. CUSTOM_RESULTS=false (optional) set to true to enable custom results page in /config/www/results/index.php . DB_TYPE=sqlite Defaults to sqlite , can also be set to mysql or postgresql . DB_NAME=DB_NAME Database name. Required for mysql and pgsql. DB_HOSTNAME=DB_HOSTNAME Database address. Required for mysql and pgsql. DB_USERNAME=DB_USERNAME Database username. Required for mysql and pgsql. DB_PASSWORD=DB_PASSWORD Database password. Required for mysql and pgsql. DB_PORT=DB_PORT Database port. Required for mysql. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it librespeed /bin/bash To monitor the logs of the container in realtime: docker logs -f librespeed Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' librespeed Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/librespeed:latest Versions 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 01.03.21: - Fix up database settings. Make sure index.html is recreated. 28.02.21: - Added php7-ctype. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log. 09.01.20: - Initial Release.","title":"librespeed"},{"location":"images/docker-librespeed/#linuxserverlibrespeed","text":"Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit.","title":"linuxserver/librespeed"},{"location":"images/docker-librespeed/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-librespeed/#application-setup","text":"Access the speedtest webui at http://SERVERIP . The results database can be accessed at http://SERVERIP/results/stats.php with the password set. The default template used is based on example-singleServer-full.html . However, all templates are provided for reference at /config/www/ . Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default. You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults. If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking.","title":"Application Setup"},{"location":"images/docker-librespeed/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-librespeed/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : librespeed : image : lscr.io/linuxserver/librespeed:latest container_name : librespeed environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PASSWORD=PASSWORD - CUSTOM_RESULTS=false #optional - DB_TYPE=sqlite #optional - DB_NAME=DB_NAME #optional - DB_HOSTNAME=DB_HOSTNAME #optional - DB_USERNAME=DB_USERNAME #optional - DB_PASSWORD=DB_PASSWORD #optional - DB_PORT=DB_PORT #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-librespeed/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = librespeed \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PASSWORD = PASSWORD \\ -e CUSTOM_RESULTS = false ` #optional` \\ -e DB_TYPE = sqlite ` #optional` \\ -e DB_NAME = DB_NAME ` #optional` \\ -e DB_HOSTNAME = DB_HOSTNAME ` #optional` \\ -e DB_USERNAME = DB_USERNAME ` #optional` \\ -e DB_PASSWORD = DB_PASSWORD ` #optional` \\ -e DB_PORT = DB_PORT ` #optional` \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/librespeed:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-librespeed/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-librespeed/#ports-p","text":"Parameter Function 80 web gui","title":"Ports (-p)"},{"location":"images/docker-librespeed/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=PASSWORD Set the password for the results database. CUSTOM_RESULTS=false (optional) set to true to enable custom results page in /config/www/results/index.php . DB_TYPE=sqlite Defaults to sqlite , can also be set to mysql or postgresql . DB_NAME=DB_NAME Database name. Required for mysql and pgsql. DB_HOSTNAME=DB_HOSTNAME Database address. Required for mysql and pgsql. DB_USERNAME=DB_USERNAME Database username. Required for mysql and pgsql. DB_PASSWORD=DB_PASSWORD Database password. Required for mysql and pgsql. DB_PORT=DB_PORT Database port. Required for mysql.","title":"Environment Variables (-e)"},{"location":"images/docker-librespeed/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-librespeed/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-librespeed/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-librespeed/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-librespeed/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-librespeed/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-librespeed/#support-info","text":"Shell access whilst the container is running: docker exec -it librespeed /bin/bash To monitor the logs of the container in realtime: docker logs -f librespeed Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' librespeed Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/librespeed:latest","title":"Support Info"},{"location":"images/docker-librespeed/#versions","text":"20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 01.03.21: - Fix up database settings. Make sure index.html is recreated. 28.02.21: - Added php7-ctype. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log. 09.01.20: - Initial Release.","title":"Versions"},{"location":"images/docker-lidarr/","text":"linuxserver/lidarr Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Lidarr releases. develop \u2705 Develop Lidarr Releases. nightly \u2705 Nightly Lidarr Releases. Application Setup Access the webui at :8686 , for more information check out Lidarr . Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on seperate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music. Another item to keep in mind, is that within lidarr itself, you should then map your download client folder to your lidarr folder: Settings -> Download Client -> advanced -> remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to seperate your downloaded data types. Media folders We have set /music and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : lidarr : image : lscr.io/linuxserver/lidarr:latest container_name : lidarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/music:/music #optional - /path/to/downloads:/downloads #optional ports : - 8686:8686 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = lidarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8686 :8686 \\ -v /path/to/appdata/config:/config \\ -v /path/to/music:/music ` #optional` \\ -v /path/to/downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/lidarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8686 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files for Lidarr. /music Music files (See note in Application setup). /downloads Path to your download folder for music (See note in Application setup). Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it lidarr /bin/bash To monitor the logs of the container in realtime: docker logs -f lidarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lidarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lidarr:latest Versions 06.06.22: - Rebase master branch to Alpine 3.15. 06.05.22: - Rebase master branch to Focal. 06.05.22: - Rebase develop branch to Alpine. 04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch. 30.12.21: - Add nightly-alpine branch. 01.08.21: - Add libchromaprint-tools. 11.07.21: - Make the paths clearer to the user. 18.04.21: - Switch latest tag to net core. 25.01.21: - Publish develop tag. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 18.04.20: - Removed /downloads and /music volumes from Dockerfiles. 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint. 26.01.19: - Add pipeline logic and multi arch. 22.04.18: - Switch to beta builds. 17.03.18: - Add ENV XDG_CONFIG_HOME=\"/config/xdg\" to Dockerfile for signalr fix. 27.02.18: - Use json to query for new version. 23.02.18: - Initial Release.","title":"lidarr"},{"location":"images/docker-lidarr/#linuxserverlidarr","text":"Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.","title":"linuxserver/lidarr"},{"location":"images/docker-lidarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-lidarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Lidarr releases. develop \u2705 Develop Lidarr Releases. nightly \u2705 Nightly Lidarr Releases.","title":"Version Tags"},{"location":"images/docker-lidarr/#application-setup","text":"Access the webui at :8686 , for more information check out Lidarr . Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on seperate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music. Another item to keep in mind, is that within lidarr itself, you should then map your download client folder to your lidarr folder: Settings -> Download Client -> advanced -> remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to seperate your downloaded data types.","title":"Application Setup"},{"location":"images/docker-lidarr/#media-folders","text":"We have set /music and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-lidarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-lidarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : lidarr : image : lscr.io/linuxserver/lidarr:latest container_name : lidarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/music:/music #optional - /path/to/downloads:/downloads #optional ports : - 8686:8686 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-lidarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = lidarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8686 :8686 \\ -v /path/to/appdata/config:/config \\ -v /path/to/music:/music ` #optional` \\ -v /path/to/downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/lidarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-lidarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-lidarr/#ports-p","text":"Parameter Function 8686 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-lidarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-lidarr/#volume-mappings-v","text":"Volume Function /config Configuration files for Lidarr. /music Music files (See note in Application setup). /downloads Path to your download folder for music (See note in Application setup).","title":"Volume Mappings (-v)"},{"location":"images/docker-lidarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-lidarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-lidarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-lidarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-lidarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-lidarr/#support-info","text":"Shell access whilst the container is running: docker exec -it lidarr /bin/bash To monitor the logs of the container in realtime: docker logs -f lidarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lidarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lidarr:latest","title":"Support Info"},{"location":"images/docker-lidarr/#versions","text":"06.06.22: - Rebase master branch to Alpine 3.15. 06.05.22: - Rebase master branch to Focal. 06.05.22: - Rebase develop branch to Alpine. 04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch. 30.12.21: - Add nightly-alpine branch. 01.08.21: - Add libchromaprint-tools. 11.07.21: - Make the paths clearer to the user. 18.04.21: - Switch latest tag to net core. 25.01.21: - Publish develop tag. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 18.04.20: - Removed /downloads and /music volumes from Dockerfiles. 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint. 26.01.19: - Add pipeline logic and multi arch. 22.04.18: - Switch to beta builds. 17.03.18: - Add ENV XDG_CONFIG_HOME=\"/config/xdg\" to Dockerfile for signalr fix. 27.02.18: - Use json to query for new version. 23.02.18: - Initial Release.","title":"Versions"},{"location":"images/docker-limnoria/","text":"linuxserver/limnoria Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup New Configuration If you do not have an existing config you will need to start the container and then run the following wizard command: docker exec -it -w /config -u abc limnoria limnoria-wizard Existing Configuration If you have an existing config, adjust the directory settings in your conf file as follows: supybot.directories.backup: /config/backup supybot.directories.conf: /config/conf supybot.directories.data: /config/data supybot.directories.data.tmp: /config/data/tmp supybot.directories.data.web: /config/web supybot.directories.log: /config/logs supybot.directories.plugins: /config/plugins NOTE: These are not grouped together in the file. You will need to search your conf file for the variables. Then place your conf file and any of your existing directories in /config and start up the container. Plugin Requirements The container will pip install any requirements.txt it finds in the /config/plugins folder on startup. If you install a plugin using the PluginDownloader that includes a requirements.txt you can execute a shell into the container and then use pip install /config/plugins/ThePlugin/requirements.txt or restart the container and the requirements will be installed. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : limnoria : image : lscr.io/linuxserver/limnoria:latest container_name : limnoria environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - path/to/config:/config ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = limnoria \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/limnoria:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Port for Limnoria's web interface. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where Limnoria config is stored. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it limnoria /bin/bash To monitor the logs of the container in realtime: docker logs -f limnoria Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' limnoria Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/limnoria:latest Versions 22.12.22: - Rebase to alpine 3.17. 19.09.22: - Rebase to alpine 3.15. 25.05.21: - Install plugin requirements on container init. 17.05.21: - Add linuxserver wheel index. 13.02.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 13.01.20: - Initial Release.","title":"limnoria"},{"location":"images/docker-limnoria/#linuxserverlimnoria","text":"Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.","title":"linuxserver/limnoria"},{"location":"images/docker-limnoria/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-limnoria/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-limnoria/#new-configuration","text":"If you do not have an existing config you will need to start the container and then run the following wizard command: docker exec -it -w /config -u abc limnoria limnoria-wizard","title":"New Configuration"},{"location":"images/docker-limnoria/#existing-configuration","text":"If you have an existing config, adjust the directory settings in your conf file as follows: supybot.directories.backup: /config/backup supybot.directories.conf: /config/conf supybot.directories.data: /config/data supybot.directories.data.tmp: /config/data/tmp supybot.directories.data.web: /config/web supybot.directories.log: /config/logs supybot.directories.plugins: /config/plugins NOTE: These are not grouped together in the file. You will need to search your conf file for the variables. Then place your conf file and any of your existing directories in /config and start up the container.","title":"Existing Configuration"},{"location":"images/docker-limnoria/#plugin-requirements","text":"The container will pip install any requirements.txt it finds in the /config/plugins folder on startup. If you install a plugin using the PluginDownloader that includes a requirements.txt you can execute a shell into the container and then use pip install /config/plugins/ThePlugin/requirements.txt or restart the container and the requirements will be installed.","title":"Plugin Requirements"},{"location":"images/docker-limnoria/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-limnoria/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : limnoria : image : lscr.io/linuxserver/limnoria:latest container_name : limnoria environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - path/to/config:/config ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-limnoria/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = limnoria \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/limnoria:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-limnoria/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-limnoria/#ports-p","text":"Parameter Function 8080 Port for Limnoria's web interface.","title":"Ports (-p)"},{"location":"images/docker-limnoria/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-limnoria/#volume-mappings-v","text":"Volume Function /config Where Limnoria config is stored.","title":"Volume Mappings (-v)"},{"location":"images/docker-limnoria/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-limnoria/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-limnoria/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-limnoria/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-limnoria/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-limnoria/#support-info","text":"Shell access whilst the container is running: docker exec -it limnoria /bin/bash To monitor the logs of the container in realtime: docker logs -f limnoria Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' limnoria Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/limnoria:latest","title":"Support Info"},{"location":"images/docker-limnoria/#versions","text":"22.12.22: - Rebase to alpine 3.17. 19.09.22: - Rebase to alpine 3.15. 25.05.21: - Install plugin requirements on container init. 17.05.21: - Add linuxserver wheel index. 13.02.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 13.01.20: - Initial Release.","title":"Versions"},{"location":"images/docker-lychee/","text":"linuxserver/lychee Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\" UPGRADE WARNING Please note that the v4 upgrade process resets ALL password-protected albums. Any albums that were made public with a password will need to be re-secured. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This image will not work with a prefilled /pictures mount, lychee wants total control over this folder Setup mysql/mariadb and account via the webui, accessible at http://SERVERIP:PORT More info at lychee . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) version : \"3\" services : mariadb : image : lscr.io/linuxserver/mariadb:latest container_name : lychee_mariadb restart : always volumes : - /path/to/mariadb/data:/config environment : - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=lychee - MYSQL_USER=lychee - MYSQL_PASSWORD=dbpassword - PGID=1000 - PUID=1000 - TZ=Europe/London lychee : image : lscr.io/linuxserver/lychee:latest container_name : lychee restart : always depends_on : - mariadb volumes : - /path/to/config:/config - /path/to/pictures:/pictures environment : - DB_HOST=mariadb - DB_USERNAME=lychee - DB_PASSWORD=dbpassword - DB_DATABASE=lychee - DB_PORT=3306 - PGID=1000 - PUID=1000 - TZ=Europe/London ports : - 80:80 docker cli ( click here for more info ) docker run -d \\ --name = lychee \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DB_HOST = mariadb \\ -e DB_USERNAME = lychee \\ -e DB_PASSWORD = dbpassword \\ -e DB_DATABASE = lychee \\ -p 80 :80 \\ -v /path/to/config:/config \\ -v /path/to/pictures:/pictures \\ --restart unless-stopped \\ lscr.io/linuxserver/lychee:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London DB_HOST=mariadb for specifying the database host DB_USERNAME=lychee for specifying the database user DB_PASSWORD=dbpassword for specifying the database password DB_DATABASE=lychee for specifying the database to be used Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /pictures Where lychee will store uploaded data. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it lychee /bin/bash To monitor the logs of the container in realtime: docker logs -f lychee Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lychee Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lychee:latest Versions 04.12.21: - Rebase to alpine 3.15 with php8. 13.05.21: - Make readme clearer. 18.04.21: - Add php-intl for v4.3. 31.01.21: - Add jpegoptim. 15.01.21: - Rebase to alpine 3.13, add php7-ctype. 10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 23.10.19: - Increase fastcgi timeouts (existing users need to manually update). 19.09.19: - Update project website url. 28.06.19: - Rebasing to alpine 3.10. 05.05.19: - Rebase to alpine 3.9, use new armv7 image format. 21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme. 14.01.19: - Adding pipeline logic and multi arch.. 04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository. 08.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 12.02.17: - Initial Release.","title":"lychee"},{"location":"images/docker-lychee/#linuxserverlychee","text":"Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\"","title":"linuxserver/lychee"},{"location":"images/docker-lychee/#upgrade-warning","text":"Please note that the v4 upgrade process resets ALL password-protected albums. Any albums that were made public with a password will need to be re-secured.","title":"UPGRADE WARNING"},{"location":"images/docker-lychee/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-lychee/#application-setup","text":"This image will not work with a prefilled /pictures mount, lychee wants total control over this folder Setup mysql/mariadb and account via the webui, accessible at http://SERVERIP:PORT More info at lychee .","title":"Application Setup"},{"location":"images/docker-lychee/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-lychee/#docker-compose-recommended-click-here-for-more-info","text":"version : \"3\" services : mariadb : image : lscr.io/linuxserver/mariadb:latest container_name : lychee_mariadb restart : always volumes : - /path/to/mariadb/data:/config environment : - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_DATABASE=lychee - MYSQL_USER=lychee - MYSQL_PASSWORD=dbpassword - PGID=1000 - PUID=1000 - TZ=Europe/London lychee : image : lscr.io/linuxserver/lychee:latest container_name : lychee restart : always depends_on : - mariadb volumes : - /path/to/config:/config - /path/to/pictures:/pictures environment : - DB_HOST=mariadb - DB_USERNAME=lychee - DB_PASSWORD=dbpassword - DB_DATABASE=lychee - DB_PORT=3306 - PGID=1000 - PUID=1000 - TZ=Europe/London ports : - 80:80","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-lychee/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = lychee \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e DB_HOST = mariadb \\ -e DB_USERNAME = lychee \\ -e DB_PASSWORD = dbpassword \\ -e DB_DATABASE = lychee \\ -p 80 :80 \\ -v /path/to/config:/config \\ -v /path/to/pictures:/pictures \\ --restart unless-stopped \\ lscr.io/linuxserver/lychee:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-lychee/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-lychee/#ports-p","text":"Parameter Function 80 http gui","title":"Ports (-p)"},{"location":"images/docker-lychee/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London DB_HOST=mariadb for specifying the database host DB_USERNAME=lychee for specifying the database user DB_PASSWORD=dbpassword for specifying the database password DB_DATABASE=lychee for specifying the database to be used","title":"Environment Variables (-e)"},{"location":"images/docker-lychee/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /pictures Where lychee will store uploaded data.","title":"Volume Mappings (-v)"},{"location":"images/docker-lychee/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-lychee/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-lychee/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-lychee/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-lychee/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-lychee/#support-info","text":"Shell access whilst the container is running: docker exec -it lychee /bin/bash To monitor the logs of the container in realtime: docker logs -f lychee Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lychee Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lychee:latest","title":"Support Info"},{"location":"images/docker-lychee/#versions","text":"04.12.21: - Rebase to alpine 3.15 with php8. 13.05.21: - Make readme clearer. 18.04.21: - Add php-intl for v4.3. 31.01.21: - Add jpegoptim. 15.01.21: - Rebase to alpine 3.13, add php7-ctype. 10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 23.10.19: - Increase fastcgi timeouts (existing users need to manually update). 19.09.19: - Update project website url. 28.06.19: - Rebasing to alpine 3.10. 05.05.19: - Rebase to alpine 3.9, use new armv7 image format. 21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme. 14.01.19: - Adding pipeline logic and multi arch.. 04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository. 08.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 12.02.17: - Initial Release.","title":"Versions"},{"location":"images/docker-mariadb/","text":"linuxserver/mariadb Mariadb is one of the most popular database servers. Made by the original developers of MySQL. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup If you didn't set a password during installation, (see logs for warning) use mysqladmin -u root password to set one at the docker prompt... NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password. NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose. Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable. Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl Loading passwords and users from files The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file: /config/env Using the following format: MYSQL_ROOT_PASSWORD=\"ROOT_ACCESS_PASSWORD\" MYSQL_DATABASE=\"USER_DB_NAME\" MYSQL_USER=\"MYSQL_USER\" MYSQL_PASSWORD=\"DATABASE_PASSWORD\" REMOTE_SQL=\"http://URL1/your.sql,https://URL2/your.sql\" These settings can be mixed and matched with Docker ENV settings as you require, but the settings in the file will always take precedence. Bootstrapping a new instance We support a one time run of custom sql files on init. In order to use this place *.sql files in: /config/initdb.d/ This will have the same effect as setting the REMOTE_SQL environment variable. The sql will only be run on the containers first boot and setup. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : mariadb : image : lscr.io/linuxserver/mariadb:latest container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD - TZ=Europe/London - MYSQL_DATABASE=USER_DB_NAME #optional - MYSQL_USER=MYSQL_USER #optional - MYSQL_PASSWORD=DATABASE_PASSWORD #optional - REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql #optional volumes : - path_to_data:/config ports : - 3306:3306 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = mariadb \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = ROOT_ACCESS_PASSWORD \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = USER_DB_NAME ` #optional` \\ -e MYSQL_USER = MYSQL_USER ` #optional` \\ -e MYSQL_PASSWORD = DATABASE_PASSWORD ` #optional` \\ -e REMOTE_SQL = http://URL1/your.sql,https://URL2/your.sql ` #optional` \\ -p 3306 :3306 \\ -v path_to_data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3306 Mariadb listens on this port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD Set this to root password for installation (minimum 4 characters & non-alphanumeric passwords must be properly escaped). TZ=Europe/London Specify a timezone to use EG Europe/London. MYSQL_DATABASE=USER_DB_NAME Specify the name of a database to be created on image startup. MYSQL_USER=MYSQL_USER This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here). MYSQL_PASSWORD=DATABASE_PASSWORD Set this to the password you want to use for you MYSQL_USER (minimum 4 characters & non-alphanumeric passwords must be properly escaped). REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql Set this to ingest sql files from an http/https endpoint (comma seperated array). Volume Mappings ( -v ) Volume Function /config Contains the db itself and all assorted settings. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mariadb /bin/bash To monitor the logs of the container in realtime: docker logs -f mariadb Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mariadb Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mariadb:latest Versions 11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users. 06.07.21: - Rebase master to alpine. 03.07.21: - Rebase to 3.14. 08.02.21: - Fix new installs. 08.02.21: - Rebase to alpine. Add mariadb-backup. 08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future. 27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 07.03.19: - Add ability to setup a database and default user on first spinup. 26.01.19: - Add pipeline logic and multi arch. 10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository. 09.12.17: - Fix continuation lines. 12.09.17: - Gracefully shut down mariadb. 27.10.16: - Implement linting suggestions on database init script. 11.10.16: - Rebase to ubuntu xenial, add version labelling. 09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile. 26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart. 23.12.15: - Remove autoupdating, between some version updates the container breaks. 12.08.15: - Initial Release.","title":"mariadb"},{"location":"images/docker-mariadb/#linuxservermariadb","text":"Mariadb is one of the most popular database servers. Made by the original developers of MySQL.","title":"linuxserver/mariadb"},{"location":"images/docker-mariadb/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-mariadb/#application-setup","text":"If you didn't set a password during installation, (see logs for warning) use mysqladmin -u root password to set one at the docker prompt... NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password. NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose. Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable. Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl","title":"Application Setup"},{"location":"images/docker-mariadb/#loading-passwords-and-users-from-files","text":"The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file: /config/env Using the following format: MYSQL_ROOT_PASSWORD=\"ROOT_ACCESS_PASSWORD\" MYSQL_DATABASE=\"USER_DB_NAME\" MYSQL_USER=\"MYSQL_USER\" MYSQL_PASSWORD=\"DATABASE_PASSWORD\" REMOTE_SQL=\"http://URL1/your.sql,https://URL2/your.sql\" These settings can be mixed and matched with Docker ENV settings as you require, but the settings in the file will always take precedence.","title":"Loading passwords and users from files"},{"location":"images/docker-mariadb/#bootstrapping-a-new-instance","text":"We support a one time run of custom sql files on init. In order to use this place *.sql files in: /config/initdb.d/ This will have the same effect as setting the REMOTE_SQL environment variable. The sql will only be run on the containers first boot and setup.","title":"Bootstrapping a new instance"},{"location":"images/docker-mariadb/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-mariadb/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : mariadb : image : lscr.io/linuxserver/mariadb:latest container_name : mariadb environment : - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD - TZ=Europe/London - MYSQL_DATABASE=USER_DB_NAME #optional - MYSQL_USER=MYSQL_USER #optional - MYSQL_PASSWORD=DATABASE_PASSWORD #optional - REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql #optional volumes : - path_to_data:/config ports : - 3306:3306 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-mariadb/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = mariadb \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MYSQL_ROOT_PASSWORD = ROOT_ACCESS_PASSWORD \\ -e TZ = Europe/London \\ -e MYSQL_DATABASE = USER_DB_NAME ` #optional` \\ -e MYSQL_USER = MYSQL_USER ` #optional` \\ -e MYSQL_PASSWORD = DATABASE_PASSWORD ` #optional` \\ -e REMOTE_SQL = http://URL1/your.sql,https://URL2/your.sql ` #optional` \\ -p 3306 :3306 \\ -v path_to_data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mariadb:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-mariadb/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mariadb/#ports-p","text":"Parameter Function 3306 Mariadb listens on this port.","title":"Ports (-p)"},{"location":"images/docker-mariadb/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD Set this to root password for installation (minimum 4 characters & non-alphanumeric passwords must be properly escaped). TZ=Europe/London Specify a timezone to use EG Europe/London. MYSQL_DATABASE=USER_DB_NAME Specify the name of a database to be created on image startup. MYSQL_USER=MYSQL_USER This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here). MYSQL_PASSWORD=DATABASE_PASSWORD Set this to the password you want to use for you MYSQL_USER (minimum 4 characters & non-alphanumeric passwords must be properly escaped). REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql Set this to ingest sql files from an http/https endpoint (comma seperated array).","title":"Environment Variables (-e)"},{"location":"images/docker-mariadb/#volume-mappings-v","text":"Volume Function /config Contains the db itself and all assorted settings.","title":"Volume Mappings (-v)"},{"location":"images/docker-mariadb/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-mariadb/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mariadb/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mariadb/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-mariadb/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mariadb/#support-info","text":"Shell access whilst the container is running: docker exec -it mariadb /bin/bash To monitor the logs of the container in realtime: docker logs -f mariadb Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mariadb Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mariadb:latest","title":"Support Info"},{"location":"images/docker-mariadb/#versions","text":"11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users. 06.07.21: - Rebase master to alpine. 03.07.21: - Rebase to 3.14. 08.02.21: - Fix new installs. 08.02.21: - Rebase to alpine. Add mariadb-backup. 08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future. 27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 07.03.19: - Add ability to setup a database and default user on first spinup. 26.01.19: - Add pipeline logic and multi arch. 10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository. 09.12.17: - Fix continuation lines. 12.09.17: - Gracefully shut down mariadb. 27.10.16: - Implement linting suggestions on database init script. 11.10.16: - Rebase to ubuntu xenial, add version labelling. 09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile. 26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart. 23.12.15: - Remove autoupdating, between some version updates the container breaks. 12.08.15: - Initial Release.","title":"Versions"},{"location":"images/docker-mastodon/","text":"linuxserver/mastodon Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones.. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. develop \u2705 Pre-releases only . Application Setup To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret once for each. To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key To use tootctl you can run something like docker exec -it -w /app/www mastodon bin/tootctl This container requires separate postgres and redis instances to run. We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project. For more information check out the mastodon documentation . Running separate sidekiq instances It is currently only supported to run a single queue per container instance or all queues in a single container instance. All containers must share the same `/config`` mount and be on a common docker network. Strict reverse proxies This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : mastodon : image : lscr.io/linuxserver/mastodon:latest container_name : mastodon environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - LOCAL_DOMAIN=example.com - REDIS_HOST=redis - REDIS_PORT=6379 - DB_HOST=db - DB_USER=mastodon - DB_NAME=mastodon - DB_PASS=mastodon - DB_PORT=5432 - ES_ENABLED=false - SECRET_KEY_BASE= - OTP_SECRET= - VAPID_PRIVATE_KEY= - VAPID_PUBLIC_KEY= - SMTP_SERVER=mail.example.com - SMTP_PORT=25 - SMTP_LOGIN= - SMTP_PASSWORD= - SMTP_FROM_ADDRESS=notifications@example.com - S3_ENABLED=false - WEB_DOMAIN=mastodon.example.com #optional - ES_HOST=es #optional - ES_PORT=9200 #optional - ES_USER=elastic #optional - ES_PASS=elastic #optional - S3_BUCKET= #optional - AWS_ACCESS_KEY_ID= #optional - AWS_SECRET_ACCESS_KEY= #optional - S3_ALIAS_HOST= #optional - SIDEKIQ_ONLY=false #optional - SIDEKIQ_QUEUE= #optional - SIDEKIQ_DEFAULT=false #optional - SIDEKIQ_THREADS=5 #optional - DB_POOL=5 #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = mastodon \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e LOCAL_DOMAIN = example.com \\ -e REDIS_HOST = redis \\ -e REDIS_PORT = 6379 \\ -e DB_HOST = db \\ -e DB_USER = mastodon \\ -e DB_NAME = mastodon \\ -e DB_PASS = mastodon \\ -e DB_PORT = 5432 \\ -e ES_ENABLED = false \\ -e SECRET_KEY_BASE = \\ -e OTP_SECRET = \\ -e VAPID_PRIVATE_KEY = \\ -e VAPID_PUBLIC_KEY = \\ -e SMTP_SERVER = mail.example.com \\ -e SMTP_PORT = 25 \\ -e SMTP_LOGIN = \\ -e SMTP_PASSWORD = \\ -e SMTP_FROM_ADDRESS = notifications@example.com \\ -e S3_ENABLED = false \\ -e WEB_DOMAIN = mastodon.example.com ` #optional` \\ -e ES_HOST = es ` #optional` \\ -e ES_PORT = 9200 ` #optional` \\ -e ES_USER = elastic ` #optional` \\ -e ES_PASS = elastic ` #optional` \\ -e S3_BUCKET = ` #optional` \\ -e AWS_ACCESS_KEY_ID = ` #optional` \\ -e AWS_SECRET_ACCESS_KEY = ` #optional` \\ -e S3_ALIAS_HOST = ` #optional` \\ -e SIDEKIQ_ONLY = false ` #optional` \\ -e SIDEKIQ_QUEUE = ` #optional` \\ -e SIDEKIQ_DEFAULT = false ` #optional` \\ -e SIDEKIQ_THREADS = 5 ` #optional` \\ -e DB_POOL = 5 ` #optional` \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mastodon:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Port for web frontend 443 Port for web frontend Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York LOCAL_DOMAIN=example.com This is the unique identifier of your server in the network. It cannot be safely changed later. REDIS_HOST=redis Redis server hostname REDIS_PORT=6379 Redis port DB_HOST=db Postgres database hostname DB_USER=mastodon Postgres username DB_NAME=mastodon Postgres db name DB_PASS=mastodon Postgres password DB_PORT=5432 Portgres port ES_ENABLED=false Enable or disable Elasticsearch (requires a separate ES instance) SECRET_KEY_BASE= Browser session secret. Changing it will break all active browser sessions. OTP_SECRET= MFA secret. Changing it will break two-factor authentication. VAPID_PRIVATE_KEY= Push notification private key. Changing it will break push notifications. VAPID_PUBLIC_KEY= Push notification public key. Changing it will break push notifications. SMTP_SERVER=mail.example.com SMTP server for email notifications SMTP_PORT=25 SMTP server port SMTP_LOGIN= SMTP username SMTP_PASSWORD= SMTP password SMTP_FROM_ADDRESS=notifications@example.com From address for emails send from Mastodon S3_ENABLED=false Enable or disable S3 storage of uploaded files WEB_DOMAIN=mastodon.example.com This can be set if you want your server identifier to be different to the subdomain hosting Mastodon. See https://docs.joinmastodon.org/admin/config/#basic ES_HOST=es Elasticsearch server hostname ES_PORT=9200 Elasticsearch port ES_USER=elastic Elasticsearch username ES_PASS=elastic Elasticsearch password S3_BUCKET= S3 bucket hostname AWS_ACCESS_KEY_ID= S3 bucket access key ID AWS_SECRET_ACCESS_KEY= S3 bucket secret access key S3_ALIAS_HOST= Alternate hostname for object fetching if you are front the S3 connections. SIDEKIQ_ONLY=false Only run the sidekiq service in this container instance. For large scale instances that need better queue handling. SIDEKIQ_QUEUE= The name of the sidekiq queue to run in this container. See notes . SIDEKIQ_DEFAULT=false Set to true on the main container if you're running additional sidekiq instances. It will run the default queue. SIDEKIQ_THREADS=5 The number of threads for sidekiq to use. See notes . DB_POOL=5 The size of the DB connection pool, must be at least the same as SIDEKIQ_THREADS . See notes . Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mastodon /bin/bash To monitor the logs of the container in realtime: docker logs -f mastodon Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mastodon Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mastodon:latest Versions 09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration). 19.12.22: - Support separate sidekiq queue instances. 05.11.22: - Initial Release.","title":"mastodon"},{"location":"images/docker-mastodon/#linuxservermastodon","text":"Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..","title":"linuxserver/mastodon"},{"location":"images/docker-mastodon/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-mastodon/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. develop \u2705 Pre-releases only .","title":"Version Tags"},{"location":"images/docker-mastodon/#application-setup","text":"To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret once for each. To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key To use tootctl you can run something like docker exec -it -w /app/www mastodon bin/tootctl This container requires separate postgres and redis instances to run. We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project. For more information check out the mastodon documentation .","title":"Application Setup"},{"location":"images/docker-mastodon/#running-separate-sidekiq-instances","text":"It is currently only supported to run a single queue per container instance or all queues in a single container instance. All containers must share the same `/config`` mount and be on a common docker network.","title":"Running separate sidekiq instances"},{"location":"images/docker-mastodon/#strict-reverse-proxies","text":"This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-mastodon/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-mastodon/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : mastodon : image : lscr.io/linuxserver/mastodon:latest container_name : mastodon environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - LOCAL_DOMAIN=example.com - REDIS_HOST=redis - REDIS_PORT=6379 - DB_HOST=db - DB_USER=mastodon - DB_NAME=mastodon - DB_PASS=mastodon - DB_PORT=5432 - ES_ENABLED=false - SECRET_KEY_BASE= - OTP_SECRET= - VAPID_PRIVATE_KEY= - VAPID_PUBLIC_KEY= - SMTP_SERVER=mail.example.com - SMTP_PORT=25 - SMTP_LOGIN= - SMTP_PASSWORD= - SMTP_FROM_ADDRESS=notifications@example.com - S3_ENABLED=false - WEB_DOMAIN=mastodon.example.com #optional - ES_HOST=es #optional - ES_PORT=9200 #optional - ES_USER=elastic #optional - ES_PASS=elastic #optional - S3_BUCKET= #optional - AWS_ACCESS_KEY_ID= #optional - AWS_SECRET_ACCESS_KEY= #optional - S3_ALIAS_HOST= #optional - SIDEKIQ_ONLY=false #optional - SIDEKIQ_QUEUE= #optional - SIDEKIQ_DEFAULT=false #optional - SIDEKIQ_THREADS=5 #optional - DB_POOL=5 #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-mastodon/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = mastodon \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e LOCAL_DOMAIN = example.com \\ -e REDIS_HOST = redis \\ -e REDIS_PORT = 6379 \\ -e DB_HOST = db \\ -e DB_USER = mastodon \\ -e DB_NAME = mastodon \\ -e DB_PASS = mastodon \\ -e DB_PORT = 5432 \\ -e ES_ENABLED = false \\ -e SECRET_KEY_BASE = \\ -e OTP_SECRET = \\ -e VAPID_PRIVATE_KEY = \\ -e VAPID_PUBLIC_KEY = \\ -e SMTP_SERVER = mail.example.com \\ -e SMTP_PORT = 25 \\ -e SMTP_LOGIN = \\ -e SMTP_PASSWORD = \\ -e SMTP_FROM_ADDRESS = notifications@example.com \\ -e S3_ENABLED = false \\ -e WEB_DOMAIN = mastodon.example.com ` #optional` \\ -e ES_HOST = es ` #optional` \\ -e ES_PORT = 9200 ` #optional` \\ -e ES_USER = elastic ` #optional` \\ -e ES_PASS = elastic ` #optional` \\ -e S3_BUCKET = ` #optional` \\ -e AWS_ACCESS_KEY_ID = ` #optional` \\ -e AWS_SECRET_ACCESS_KEY = ` #optional` \\ -e S3_ALIAS_HOST = ` #optional` \\ -e SIDEKIQ_ONLY = false ` #optional` \\ -e SIDEKIQ_QUEUE = ` #optional` \\ -e SIDEKIQ_DEFAULT = false ` #optional` \\ -e SIDEKIQ_THREADS = 5 ` #optional` \\ -e DB_POOL = 5 ` #optional` \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/mastodon:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-mastodon/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mastodon/#ports-p","text":"Parameter Function 80 Port for web frontend 443 Port for web frontend","title":"Ports (-p)"},{"location":"images/docker-mastodon/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York LOCAL_DOMAIN=example.com This is the unique identifier of your server in the network. It cannot be safely changed later. REDIS_HOST=redis Redis server hostname REDIS_PORT=6379 Redis port DB_HOST=db Postgres database hostname DB_USER=mastodon Postgres username DB_NAME=mastodon Postgres db name DB_PASS=mastodon Postgres password DB_PORT=5432 Portgres port ES_ENABLED=false Enable or disable Elasticsearch (requires a separate ES instance) SECRET_KEY_BASE= Browser session secret. Changing it will break all active browser sessions. OTP_SECRET= MFA secret. Changing it will break two-factor authentication. VAPID_PRIVATE_KEY= Push notification private key. Changing it will break push notifications. VAPID_PUBLIC_KEY= Push notification public key. Changing it will break push notifications. SMTP_SERVER=mail.example.com SMTP server for email notifications SMTP_PORT=25 SMTP server port SMTP_LOGIN= SMTP username SMTP_PASSWORD= SMTP password SMTP_FROM_ADDRESS=notifications@example.com From address for emails send from Mastodon S3_ENABLED=false Enable or disable S3 storage of uploaded files WEB_DOMAIN=mastodon.example.com This can be set if you want your server identifier to be different to the subdomain hosting Mastodon. See https://docs.joinmastodon.org/admin/config/#basic ES_HOST=es Elasticsearch server hostname ES_PORT=9200 Elasticsearch port ES_USER=elastic Elasticsearch username ES_PASS=elastic Elasticsearch password S3_BUCKET= S3 bucket hostname AWS_ACCESS_KEY_ID= S3 bucket access key ID AWS_SECRET_ACCESS_KEY= S3 bucket secret access key S3_ALIAS_HOST= Alternate hostname for object fetching if you are front the S3 connections. SIDEKIQ_ONLY=false Only run the sidekiq service in this container instance. For large scale instances that need better queue handling. SIDEKIQ_QUEUE= The name of the sidekiq queue to run in this container. See notes . SIDEKIQ_DEFAULT=false Set to true on the main container if you're running additional sidekiq instances. It will run the default queue. SIDEKIQ_THREADS=5 The number of threads for sidekiq to use. See notes . DB_POOL=5 The size of the DB connection pool, must be at least the same as SIDEKIQ_THREADS . See notes .","title":"Environment Variables (-e)"},{"location":"images/docker-mastodon/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-mastodon/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-mastodon/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mastodon/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mastodon/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-mastodon/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mastodon/#support-info","text":"Shell access whilst the container is running: docker exec -it mastodon /bin/bash To monitor the logs of the container in realtime: docker logs -f mastodon Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mastodon Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mastodon:latest","title":"Support Info"},{"location":"images/docker-mastodon/#versions","text":"09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration). 19.12.22: - Support separate sidekiq queue instances. 05.11.22: - Initial Release.","title":"Versions"},{"location":"images/docker-medusa/","text":"linuxserver/medusa Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Web interface is at :8081 . Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : medusa : image : lscr.io/linuxserver/medusa:latest container_name : medusa environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/tv ports : - 8081:8081 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = medusa \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v :/config \\ -v :/downloads \\ -v :/tv \\ --restart unless-stopped \\ lscr.io/linuxserver/medusa:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8081 The port for the Medusa webui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London Volume Mappings ( -v ) Volume Function /config Medusa config /downloads Download location /tv TV Shows location Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it medusa /bin/bash To monitor the logs of the container in realtime: docker logs -f medusa Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' medusa Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/medusa:latest Versions 12.09.22: - Install ffmpeg for postprocessing. 12.08.22: - Bump unrar to 6.1.7. 28.02.22: - Install python3 requirements for app. 19.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 22.09.19: - Switch to python3. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Adding multi arch and pipeline logic 16.08.18: - Rebase to alpine 3.8 08.12.17: - Rebase to alpine 3.7 29.11.17: - Add py-gdbm for subtitles support 26.10.17: - Mediainfo moved from testing to community repo 10.10.17: - Use repo version of mediainfo to shorten build time 05.08.17: - Internal git pull instead of at runtime 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 02.01.17: - Initial Release","title":"medusa"},{"location":"images/docker-medusa/#linuxservermedusa","text":"Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.","title":"linuxserver/medusa"},{"location":"images/docker-medusa/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-medusa/#application-setup","text":"Web interface is at :8081 . Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa .","title":"Application Setup"},{"location":"images/docker-medusa/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-medusa/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : medusa : image : lscr.io/linuxserver/medusa:latest container_name : medusa environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/tv ports : - 8081:8081 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-medusa/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = medusa \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v :/config \\ -v :/downloads \\ -v :/tv \\ --restart unless-stopped \\ lscr.io/linuxserver/medusa:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-medusa/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-medusa/#ports-p","text":"Parameter Function 8081 The port for the Medusa webui","title":"Ports (-p)"},{"location":"images/docker-medusa/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-medusa/#volume-mappings-v","text":"Volume Function /config Medusa config /downloads Download location /tv TV Shows location","title":"Volume Mappings (-v)"},{"location":"images/docker-medusa/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-medusa/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-medusa/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-medusa/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-medusa/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-medusa/#support-info","text":"Shell access whilst the container is running: docker exec -it medusa /bin/bash To monitor the logs of the container in realtime: docker logs -f medusa Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' medusa Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/medusa:latest","title":"Support Info"},{"location":"images/docker-medusa/#versions","text":"12.09.22: - Install ffmpeg for postprocessing. 12.08.22: - Bump unrar to 6.1.7. 28.02.22: - Install python3 requirements for app. 19.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 22.09.19: - Switch to python3. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.01.19: - Adding multi arch and pipeline logic 16.08.18: - Rebase to alpine 3.8 08.12.17: - Rebase to alpine 3.7 29.11.17: - Add py-gdbm for subtitles support 26.10.17: - Mediainfo moved from testing to community repo 10.10.17: - Use repo version of mediainfo to shorten build time 05.08.17: - Internal git pull instead of at runtime 25.05.17: - Rebase to alpine 3.6 07.02.17: - Rebase to alpine 3.5 02.01.17: - Initial Release","title":"Versions"},{"location":"images/docker-minetest/","text":"linuxserver/minetest Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup You can find the world maps, mods folder and config files in /config/.minetest. If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp Client and server must be the same version, please browse the tags here to pull the appropriate version for your server: https://hub.docker.com/r/linuxserver/minetest/tags Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : minetest : image : lscr.io/linuxserver/minetest:latest container_name : minetest environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CLI_ARGS=\"--gameid minetest --port 30000\" #optional volumes : - /path/to/data:/config/.minetest ports : - 30000:30000/udp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = minetest \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CLI_ARGS = \"--gameid minetest --port 30000\" ` #optional` \\ -p 30000 :30000/udp \\ -v /path/to/data:/config/.minetest \\ --restart unless-stopped \\ lscr.io/linuxserver/minetest:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 30000/udp Port Minetest listens on. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CLI_ARGS=\"--gameid minetest --port 30000\" Optionally specify any CLI variables you want to launch the app with Volume Mappings ( -v ) Volume Function /config/.minetest Where minetest stores config files and maps etc. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it minetest /bin/bash To monitor the logs of the container in realtime: docker logs -f minetest Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minetest Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minetest:latest Versions 06.08.22: - Update irrlicht deps. 02.05.22: - Allow specifying the advertised port. 17.03.22: - Install forked irrlicht, add zstd. 19.01.22: - Rebasing to alpine 3.15. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 12.07.19: - Bugfix to support multiple CLI variables. 28.06.19: - Rebasing to alpine 3.10. 03.06.19: - Adding custom cli vars to options. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args. 14.01.19: - Add pipeline logic and multi arch. 08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master. 03.01.18: - Deprecate cpu_core routine lack of scaling. 08.12.17: - Rebase to alpine 3.7. 30.11.17: - Use cpu core counting routine to speed up build time. 26.05.17: - Rebase to alpine 3.6. 14.02.17: - Rebase to alpine 3.5. 25.11.16: - Rebase to alpine linux, move to main repo. 27.02.16: - Bump to latest version. 19.02.16: - Change port to UDP, thanks to slashopt for pointing this out. 15.02.16: - Make minetest app a service. 01.02.16: - Add lua-socket dependency. 06.11.15: - Initial Release.","title":"minetest"},{"location":"images/docker-minetest/#linuxserverminetest","text":"Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.","title":"linuxserver/minetest"},{"location":"images/docker-minetest/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-minetest/#application-setup","text":"You can find the world maps, mods folder and config files in /config/.minetest. If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp Client and server must be the same version, please browse the tags here to pull the appropriate version for your server: https://hub.docker.com/r/linuxserver/minetest/tags","title":"Application Setup"},{"location":"images/docker-minetest/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-minetest/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : minetest : image : lscr.io/linuxserver/minetest:latest container_name : minetest environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CLI_ARGS=\"--gameid minetest --port 30000\" #optional volumes : - /path/to/data:/config/.minetest ports : - 30000:30000/udp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-minetest/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = minetest \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CLI_ARGS = \"--gameid minetest --port 30000\" ` #optional` \\ -p 30000 :30000/udp \\ -v /path/to/data:/config/.minetest \\ --restart unless-stopped \\ lscr.io/linuxserver/minetest:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-minetest/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-minetest/#ports-p","text":"Parameter Function 30000/udp Port Minetest listens on.","title":"Ports (-p)"},{"location":"images/docker-minetest/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CLI_ARGS=\"--gameid minetest --port 30000\" Optionally specify any CLI variables you want to launch the app with","title":"Environment Variables (-e)"},{"location":"images/docker-minetest/#volume-mappings-v","text":"Volume Function /config/.minetest Where minetest stores config files and maps etc.","title":"Volume Mappings (-v)"},{"location":"images/docker-minetest/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-minetest/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-minetest/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-minetest/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-minetest/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-minetest/#support-info","text":"Shell access whilst the container is running: docker exec -it minetest /bin/bash To monitor the logs of the container in realtime: docker logs -f minetest Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minetest Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minetest:latest","title":"Support Info"},{"location":"images/docker-minetest/#versions","text":"06.08.22: - Update irrlicht deps. 02.05.22: - Allow specifying the advertised port. 17.03.22: - Install forked irrlicht, add zstd. 19.01.22: - Rebasing to alpine 3.15. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 12.07.19: - Bugfix to support multiple CLI variables. 28.06.19: - Rebasing to alpine 3.10. 03.06.19: - Adding custom cli vars to options. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args. 14.01.19: - Add pipeline logic and multi arch. 08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master. 03.01.18: - Deprecate cpu_core routine lack of scaling. 08.12.17: - Rebase to alpine 3.7. 30.11.17: - Use cpu core counting routine to speed up build time. 26.05.17: - Rebase to alpine 3.6. 14.02.17: - Rebase to alpine 3.5. 25.11.16: - Rebase to alpine linux, move to main repo. 27.02.16: - Bump to latest version. 19.02.16: - Change port to UDP, thanks to slashopt for pointing this out. 15.02.16: - Make minetest app a service. 01.02.16: - Add lua-socket dependency. 06.11.15: - Initial Release.","title":"Versions"},{"location":"images/docker-minisatip/","text":"linuxserver/minisatip Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Best used in conjunction with tvheadend There is no setup per se, other than adding your cards for passthrough. You can then use your cards as DVB inputs in apps such as tvheadend. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : minisatip : image : lscr.io/linuxserver/minisatip:latest container_name : minisatip environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS= volumes : - /path/to/appdata/config:/config ports : - 8875:8875 - 554:554 - 1900:1900/udp devices : - /dev/dvb:/dev/dvb restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = minisatip \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = \\ -p 8875 :8875 \\ -p 554 :554 \\ -p 1900 :1900/udp \\ -v /path/to/appdata/config:/config \\ --device /dev/dvb:/dev/dvb \\ --restart unless-stopped \\ lscr.io/linuxserver/minisatip:latest Additional runtime parameters In some cases it might be necessary to start minisatip with additional parameters, for example to configure a unicable LNB. Add the parameters you need and restart the container. Be sure to have the right parameters set as adding the wrong once might lead to the container not starting correctly. For a list of minisatip parameters visit Minisatip page. Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8875 Status Page WebUI 554 RTSP Port 1900/udp App Discovery Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Specify specific run params for minisatip Volume Mappings ( -v ) Volume Function /config Configuration files and minisatip data Device Mappings ( --device ) Parameter Function /dev/dvb For passing through Tv-cards Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it minisatip /bin/bash To monitor the logs of the container in realtime: docker logs -f minisatip Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minisatip Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minisatip:latest Versions 12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 20.02.19: - Fix run options. 11.02.19: - Add pipeline logic and multi arch. 28.08.18: - Rebase to Alpine 3.8. 13.12.17: - Rebase to Alpine 3.7. 28.05.17: - Rebase to Alpine 3.6. 08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps. 14.10.16: - Add version layer information. 18.09.16: - Add support for Common Interface. 11.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 15.08.16: - Initial Release.","title":"minisatip"},{"location":"images/docker-minisatip/#linuxserverminisatip","text":"Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.","title":"linuxserver/minisatip"},{"location":"images/docker-minisatip/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-minisatip/#application-setup","text":"Best used in conjunction with tvheadend There is no setup per se, other than adding your cards for passthrough. You can then use your cards as DVB inputs in apps such as tvheadend.","title":"Application Setup"},{"location":"images/docker-minisatip/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-minisatip/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : minisatip : image : lscr.io/linuxserver/minisatip:latest container_name : minisatip environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS= volumes : - /path/to/appdata/config:/config ports : - 8875:8875 - 554:554 - 1900:1900/udp devices : - /dev/dvb:/dev/dvb restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-minisatip/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = minisatip \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = \\ -p 8875 :8875 \\ -p 554 :554 \\ -p 1900 :1900/udp \\ -v /path/to/appdata/config:/config \\ --device /dev/dvb:/dev/dvb \\ --restart unless-stopped \\ lscr.io/linuxserver/minisatip:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-minisatip/#additional-runtime-parameters","text":"In some cases it might be necessary to start minisatip with additional parameters, for example to configure a unicable LNB. Add the parameters you need and restart the container. Be sure to have the right parameters set as adding the wrong once might lead to the container not starting correctly. For a list of minisatip parameters visit Minisatip page.","title":"Additional runtime parameters"},{"location":"images/docker-minisatip/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-minisatip/#ports-p","text":"Parameter Function 8875 Status Page WebUI 554 RTSP Port 1900/udp App Discovery","title":"Ports (-p)"},{"location":"images/docker-minisatip/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Specify specific run params for minisatip","title":"Environment Variables (-e)"},{"location":"images/docker-minisatip/#volume-mappings-v","text":"Volume Function /config Configuration files and minisatip data","title":"Volume Mappings (-v)"},{"location":"images/docker-minisatip/#device-mappings-device","text":"Parameter Function /dev/dvb For passing through Tv-cards","title":"Device Mappings (--device)"},{"location":"images/docker-minisatip/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-minisatip/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-minisatip/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-minisatip/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-minisatip/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-minisatip/#support-info","text":"Shell access whilst the container is running: docker exec -it minisatip /bin/bash To monitor the logs of the container in realtime: docker logs -f minisatip Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minisatip Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minisatip:latest","title":"Support Info"},{"location":"images/docker-minisatip/#versions","text":"12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 20.02.19: - Fix run options. 11.02.19: - Add pipeline logic and multi arch. 28.08.18: - Rebase to Alpine 3.8. 13.12.17: - Rebase to Alpine 3.7. 28.05.17: - Rebase to Alpine 3.6. 08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps. 14.10.16: - Add version layer information. 18.09.16: - Add support for Common Interface. 11.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 15.08.16: - Initial Release.","title":"Versions"},{"location":"images/docker-mstream/","text":"linuxserver/mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http://:3000 Settings are adjusted through the web ui or via editing of config.json . For more information check out Mstream . IMPORTANT NOTICE: mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json . Therefore, the environment variables USER , PASSWORD and USE_JSON are deprecated. v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : mstream : image : lscr.io/linuxserver/mstream:latest container_name : mstream environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/music:/music ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = mstream \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/data:/config \\ -v /path/to/music:/music \\ --restart unless-stopped \\ lscr.io/linuxserver/mstream:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 The port for the mStream webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London Volume Mappings ( -v ) Volume Function /config mStream config /music Music location Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mstream /bin/bash To monitor the logs of the container in realtime: docker logs -f mstream Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mstream Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mstream:latest Versions 05.04.22: - Move sync folder to /config . 02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download. 17.05.21: - Deprecating the env vars USER , PASSWORD and USE_JSON as mStream v5 requires the use of config.json . 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 18.05.19: - Inital Release","title":"mstream"},{"location":"images/docker-mstream/#linuxservermstream","text":"mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.","title":"linuxserver/mstream"},{"location":"images/docker-mstream/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-mstream/#application-setup","text":"Access the webui at http://:3000 Settings are adjusted through the web ui or via editing of config.json . For more information check out Mstream .","title":"Application Setup"},{"location":"images/docker-mstream/#important-notice","text":"mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json . Therefore, the environment variables USER , PASSWORD and USE_JSON are deprecated. v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5.","title":"IMPORTANT NOTICE:"},{"location":"images/docker-mstream/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-mstream/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : mstream : image : lscr.io/linuxserver/mstream:latest container_name : mstream environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/music:/music ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-mstream/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = mstream \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/data:/config \\ -v /path/to/music:/music \\ --restart unless-stopped \\ lscr.io/linuxserver/mstream:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-mstream/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mstream/#ports-p","text":"Parameter Function 3000 The port for the mStream webinterface","title":"Ports (-p)"},{"location":"images/docker-mstream/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-mstream/#volume-mappings-v","text":"Volume Function /config mStream config /music Music location","title":"Volume Mappings (-v)"},{"location":"images/docker-mstream/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-mstream/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mstream/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mstream/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-mstream/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mstream/#support-info","text":"Shell access whilst the container is running: docker exec -it mstream /bin/bash To monitor the logs of the container in realtime: docker logs -f mstream Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mstream Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mstream:latest","title":"Support Info"},{"location":"images/docker-mstream/#versions","text":"05.04.22: - Move sync folder to /config . 02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download. 17.05.21: - Deprecating the env vars USER , PASSWORD and USE_JSON as mStream v5 requires the use of config.json . 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 18.05.19: - Inital Release","title":"Versions"},{"location":"images/docker-musicbrainz/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/musicbrainz MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : musicbrainz : image : lscr.io/linuxserver/musicbrainz container_name : musicbrainz environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BRAINZCODE= - WEBADDRESS= - NPROC= #optional volumes : - :/config - :/data ports : - 5000:5000 restart : unless-stopped docker cli docker run -d \\ --name=musicbrainz \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e BRAINZCODE= \\ -e WEBADDRESS= \\ -e NPROC= `#optional` \\ -p 5000:5000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/musicbrainz Parameters Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 5000 WebUI -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e BRAINZCODE= To enter MusicBrainz code. See Setting up the application -e WEBADDRESS= To set ip for host to allow css to render properly, DO NOT ENTER PORT NUMBER. -e NPROC= To set number of proceses, defaults to 5 if unset. -v /config Config files for musicbrainz. -v /data Data files for musicbrainz. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup For all updates you should pull the latest image, clear all files and folders in /config and /data and reinitiate the database import by (re)starting the docker. We do not officially support upgrading this container in place with existing data sets. If you did not set WEBADDRESS env variable, then AFTER iniatilisation is complete you will need to edit the line sub WEB_SERVER { \"localhost:5000\" } in file /config/DBDefs.pm changing localhost to the ip of your host, this is to allow css to display properly You must register here to receive a MusicBrainz code to allow you to receive database updates, it is free. Get Code here . The initial import and setup of the database can take quite a long time, dependant on your download speed etc, be patient and don't restart the container before it's complete. It appears there are issues with unraid and using /mnt/user/cache/appdata instead of /mnt/cache/appdata, use /mnt/cache/appdata. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it musicbrainz /bin/bash To monitor the logs of the container in realtime: docker logs -f musicbrainz container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' musicbrainz image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/musicbrainz Updating Info Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers: Via Docker Compose Update all images: docker-compose pull or update a single image: docker-compose pull musicbrainz Let compose update all containers as necessary: docker-compose up -d or update a single container: docker-compose up -d musicbrainz You can also remove the old dangling images: docker image prune Via Docker Run Update the image: docker pull lscr.io/linuxserver/musicbrainz Stop the running container: docker stop musicbrainz Delete the container: docker rm musicbrainz Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved) You can also remove the old dangling images: docker image prune Via Watchtower auto-updater (only use if you don't remember the original parameters) Pull the latest image at its tag and replace it with the same env variables in one run: docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ containrrr/watchtower \\ --run-once musicbrainz You can also remove the old dangling images: docker image prune Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose . Image Update Notifications - Diun (Docker Image Update Notifier) We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported. Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-musicbrainz.git cd docker-musicbrainz docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/musicbrainz:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions 23.02.21: - Deprecate image as no one stepped up to take over as maintainer. 03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current. 17.05.19: - Update DBDefs.pm to schema 25 database. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools. 19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9 22.08.18: - Bump server version 2018-08-14. 30.06.18: - Bump server version 2018-06-30. 01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm. 14.05.18: - Bump server version 2018-05-09. 26.04.18: - Bump server version 2018-04-23. 09.02.18: - Bump server version 2018-02-09. 24.01.18: - Bump server version 2018-01-24. 10.01.18: - Bump server version 2018-01-10. 31.11.17: - Bump server version 2017-12-21. 30.11.17: - Add NPROC variable to allow number of processes to be set. 30.11.17: - Fix linting recommendations. 30.11.17: - Remove socket on startup if exists (thanks wtf911) re . 24.11.17: - Remove catalyst side bar on new installs. 31.10.17: - Bump server version 2017-10-31. 20.09.17: - Bump server version 2017-09-18. 06.09.17: - Bump server version 2017-09-04. 19.07.17: - Bump server version 2017-07-17. 21.06.17: - Bump server version 2017-06-19. 26.05.17: - Fix later build of postgres using /run instead of /var/run. 26.05.17: - Rebase to alpine 3.6. 15.05.17: - Schema 24 update, recommend full rebuild with new config. 15.04.17: - Bump server version 2017-04-10. 04.04.17: - Bump server version 2017-03-27. 15.03.17: - Bump server version 2017-03-13. 04.03.17: - Bump server version and use nginx to serve web pages. 06.02.17: - Rebase to alpine 3.5. 16.12.16: - Rebase to alpine linux, entailing almost complete rewrite. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README, move to main repository. 20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan. 03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly. 21.03.16: - Bump to latest server release. 16.03.16: - Bump to latest server release. 26.02.16: - Bump to latest server release. 08.02.16: - Switch to PPA version for redis. 03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads. 15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master. 10.12.15: - Initial release date.","title":"musicbrainz"},{"location":"images/docker-musicbrainz/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-musicbrainz/#linuxservermusicbrainz","text":"MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.","title":"linuxserver/musicbrainz"},{"location":"images/docker-musicbrainz/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-musicbrainz/#usage","text":"Here are some example snippets to help you get started creating a container.","title":"Usage"},{"location":"images/docker-musicbrainz/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : musicbrainz : image : lscr.io/linuxserver/musicbrainz container_name : musicbrainz environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BRAINZCODE= - WEBADDRESS= - NPROC= #optional volumes : - :/config - :/data ports : - 5000:5000 restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-musicbrainz/#docker-cli","text":"docker run -d \\ --name=musicbrainz \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e BRAINZCODE= \\ -e WEBADDRESS= \\ -e NPROC= `#optional` \\ -p 5000:5000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/musicbrainz","title":"docker cli"},{"location":"images/docker-musicbrainz/#parameters","text":"Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Parameter Function -p 5000 WebUI -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e BRAINZCODE= To enter MusicBrainz code. See Setting up the application -e WEBADDRESS= To set ip for host to allow css to render properly, DO NOT ENTER PORT NUMBER. -e NPROC= To set number of proceses, defaults to 5 if unset. -v /config Config files for musicbrainz. -v /data Data files for musicbrainz.","title":"Parameters"},{"location":"images/docker-musicbrainz/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-musicbrainz/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-musicbrainz/#user-group-identifiers","text":"When using volumes ( -v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-musicbrainz/#application-setup","text":"For all updates you should pull the latest image, clear all files and folders in /config and /data and reinitiate the database import by (re)starting the docker. We do not officially support upgrading this container in place with existing data sets. If you did not set WEBADDRESS env variable, then AFTER iniatilisation is complete you will need to edit the line sub WEB_SERVER { \"localhost:5000\" } in file /config/DBDefs.pm changing localhost to the ip of your host, this is to allow css to display properly You must register here to receive a MusicBrainz code to allow you to receive database updates, it is free. Get Code here . The initial import and setup of the database can take quite a long time, dependant on your download speed etc, be patient and don't restart the container before it's complete. It appears there are issues with unraid and using /mnt/user/cache/appdata instead of /mnt/cache/appdata, use /mnt/cache/appdata.","title":"Application Setup"},{"location":"images/docker-musicbrainz/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-musicbrainz/#support-info","text":"Shell access whilst the container is running: docker exec -it musicbrainz /bin/bash To monitor the logs of the container in realtime: docker logs -f musicbrainz container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' musicbrainz image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/musicbrainz","title":"Support Info"},{"location":"images/docker-musicbrainz/#updating-info","text":"Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image. Below are the instructions for updating containers:","title":"Updating Info"},{"location":"images/docker-musicbrainz/#via-docker-compose","text":"Update all images: docker-compose pull or update a single image: docker-compose pull musicbrainz Let compose update all containers as necessary: docker-compose up -d or update a single container: docker-compose up -d musicbrainz You can also remove the old dangling images: docker image prune","title":"Via Docker Compose"},{"location":"images/docker-musicbrainz/#via-docker-run","text":"Update the image: docker pull lscr.io/linuxserver/musicbrainz Stop the running container: docker stop musicbrainz Delete the container: docker rm musicbrainz Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved) You can also remove the old dangling images: docker image prune","title":"Via Docker Run"},{"location":"images/docker-musicbrainz/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","text":"Pull the latest image at its tag and replace it with the same env variables in one run: docker run --rm \\ -v /var/run/docker.sock:/var/run/docker.sock \\ containrrr/watchtower \\ --run-once musicbrainz You can also remove the old dangling images: docker image prune Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose .","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)"},{"location":"images/docker-musicbrainz/#image-update-notifications-diun-docker-image-update-notifier","text":"We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.","title":"Image Update Notifications - Diun (Docker Image Update Notifier)"},{"location":"images/docker-musicbrainz/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-musicbrainz.git cd docker-musicbrainz docker build \\ --no-cache \\ --pull \\ -t lscr.io/linuxserver/musicbrainz:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-musicbrainz/#versions","text":"23.02.21: - Deprecate image as no one stepped up to take over as maintainer. 03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current. 17.05.19: - Update DBDefs.pm to schema 25 database. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools. 19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9 22.08.18: - Bump server version 2018-08-14. 30.06.18: - Bump server version 2018-06-30. 01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm. 14.05.18: - Bump server version 2018-05-09. 26.04.18: - Bump server version 2018-04-23. 09.02.18: - Bump server version 2018-02-09. 24.01.18: - Bump server version 2018-01-24. 10.01.18: - Bump server version 2018-01-10. 31.11.17: - Bump server version 2017-12-21. 30.11.17: - Add NPROC variable to allow number of processes to be set. 30.11.17: - Fix linting recommendations. 30.11.17: - Remove socket on startup if exists (thanks wtf911) re . 24.11.17: - Remove catalyst side bar on new installs. 31.10.17: - Bump server version 2017-10-31. 20.09.17: - Bump server version 2017-09-18. 06.09.17: - Bump server version 2017-09-04. 19.07.17: - Bump server version 2017-07-17. 21.06.17: - Bump server version 2017-06-19. 26.05.17: - Fix later build of postgres using /run instead of /var/run. 26.05.17: - Rebase to alpine 3.6. 15.05.17: - Schema 24 update, recommend full rebuild with new config. 15.04.17: - Bump server version 2017-04-10. 04.04.17: - Bump server version 2017-03-27. 15.03.17: - Bump server version 2017-03-13. 04.03.17: - Bump server version and use nginx to serve web pages. 06.02.17: - Rebase to alpine 3.5. 16.12.16: - Rebase to alpine linux, entailing almost complete rewrite. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README, move to main repository. 20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan. 03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly. 21.03.16: - Bump to latest server release. 16.03.16: - Bump to latest server release. 26.02.16: - Bump to latest server release. 08.02.16: - Switch to PPA version for redis. 03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads. 15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master. 10.12.15: - Initial release date.","title":"Versions"},{"location":"images/docker-muximux/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/muximux Muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Find the web interface at :80 , set apps you wish to use with muximux via the webui. More info:- Muximux Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : muximux : image : lscr.io/linuxserver/muximux:latest container_name : muximux environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = muximux \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/muximux:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where muximux should store its files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it muximux /bin/bash To monitor the logs of the container in realtime: docker logs -f muximux Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' muximux Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/muximux:latest Versions 21.10.22: - Deprecate image. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 13.09.18: - Rebase to alpine 3.8. 09.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 12.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Rebase to alpine linux. 09.09.16: - Add badges to README. 22.02.16: - Initial release date.","title":"muximux"},{"location":"images/docker-muximux/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-muximux/#linuxservermuximux","text":"Muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.","title":"linuxserver/muximux"},{"location":"images/docker-muximux/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-muximux/#application-setup","text":"Find the web interface at :80 , set apps you wish to use with muximux via the webui. More info:- Muximux","title":"Application Setup"},{"location":"images/docker-muximux/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-muximux/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : muximux : image : lscr.io/linuxserver/muximux:latest container_name : muximux environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-muximux/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = muximux \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/muximux:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-muximux/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-muximux/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-muximux/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-muximux/#volume-mappings-v","text":"Volume Function /config Where muximux should store its files.","title":"Volume Mappings (-v)"},{"location":"images/docker-muximux/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-muximux/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-muximux/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-muximux/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-muximux/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-muximux/#support-info","text":"Shell access whilst the container is running: docker exec -it muximux /bin/bash To monitor the logs of the container in realtime: docker logs -f muximux Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' muximux Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/muximux:latest","title":"Support Info"},{"location":"images/docker-muximux/#versions","text":"21.10.22: - Deprecate image. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 13.09.18: - Rebase to alpine 3.8. 09.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 12.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Rebase to alpine linux. 09.09.16: - Add badges to README. 22.02.16: - Initial release date.","title":"Versions"},{"location":"images/docker-mylar/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/mylar Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : mylar : image : lscr.io/linuxserver/mylar container_name : mylar environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/comics - :/downloads ports : - 8090:8090 restart : unless-stopped docker cli docker run -d \\ --name=mylar \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 8090:8090 \\ -v :/config \\ -v :/comics \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/mylar Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8090 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation Volume Mappings ( -v ) Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup THIS IMAGE IS DEPRECATED. Please migrate to Mylar3 . The web ui for settings etc, is on :8090 For more detailed setup refer Mylar . Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mylar /bin/bash To monitor the logs of the container in realtime: docker logs -f mylar Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar Versions 21.12.20: - Deprecated. Please migrate to Mylar3 . 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 06.07.18: - Add html5lib python package. 14.06.18: - Add requests python package. 12.12.17: - Rebase to alpine 3.7. 21.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 19.02.17: - Use quiet option for cleaner console log, app logs to file anyways. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 26.01.16: - Initial release.","title":"mylar"},{"location":"images/docker-mylar/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-mylar/#linuxservermylar","text":"Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.","title":"linuxserver/mylar"},{"location":"images/docker-mylar/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-mylar/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-mylar/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : mylar : image : lscr.io/linuxserver/mylar container_name : mylar environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/comics - :/downloads ports : - 8090:8090 restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-mylar/#docker-cli","text":"docker run -d \\ --name=mylar \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 8090:8090 \\ -v :/config \\ -v :/comics \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/mylar","title":"docker cli"},{"location":"images/docker-mylar/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mylar/#ports-p","text":"Parameter Function 8090 WebUI","title":"Ports (-p)"},{"location":"images/docker-mylar/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-mylar/#volume-mappings-v","text":"Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-mylar/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mylar/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mylar/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-mylar/#application-setup","text":"THIS IMAGE IS DEPRECATED. Please migrate to Mylar3 . The web ui for settings etc, is on :8090 For more detailed setup refer Mylar .","title":"Application Setup"},{"location":"images/docker-mylar/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mylar/#support-info","text":"Shell access whilst the container is running: docker exec -it mylar /bin/bash To monitor the logs of the container in realtime: docker logs -f mylar Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar","title":"Support Info"},{"location":"images/docker-mylar/#versions","text":"21.12.20: - Deprecated. Please migrate to Mylar3 . 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Pipeline logic and multi arch. 17.08.18: - Rebase to alpine 3.8. 06.07.18: - Add html5lib python package. 14.06.18: - Add requests python package. 12.12.17: - Rebase to alpine 3.7. 21.07.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 19.02.17: - Use quiet option for cleaner console log, app logs to file anyways. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 26.01.16: - Initial release.","title":"Versions"},{"location":"images/docker-mylar3/","text":"linuxserver/mylar3 Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Mylar3 releases nightly \u2705 Commits to Mylar3 python3-dev branch Application Setup The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3 . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : mylar3 : image : lscr.io/linuxserver/mylar3:latest container_name : mylar3 environment : - PUID=1000 - PGID=1000 volumes : - /path/to/data:/config - /path/to/comics:/comics - /path/to/downloads:/downloads ports : - 8090:8090 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = mylar3 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -p 8090 :8090 \\ -v /path/to/data:/config \\ -v /path/to/comics:/comics \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/mylar3:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8090 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation Volume Mappings ( -v ) Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mylar3 /bin/bash To monitor the logs of the container in realtime: docker logs -f mylar3 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar3 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar3:latest Versions 12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3. 01.02.22: - Rebase to alpine 3.15. 02.11.21: - Rebase to alpine 3.14. Remove pathlib.py . 25.05.21: - Add libwebp support. 17.05.21: - Add linuxserver wheel index. 23.01.21: - Rebasing to alpine 3.13. 03.01.21: - Output mylar log to docker log. 21.12.20: - Release nightly tag based on commits to upstream python3-dev branch. 28.09.20: - Initial release.","title":"mylar3"},{"location":"images/docker-mylar3/#linuxservermylar3","text":"Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.","title":"linuxserver/mylar3"},{"location":"images/docker-mylar3/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-mylar3/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Mylar3 releases nightly \u2705 Commits to Mylar3 python3-dev branch","title":"Version Tags"},{"location":"images/docker-mylar3/#application-setup","text":"The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3 .","title":"Application Setup"},{"location":"images/docker-mylar3/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-mylar3/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : mylar3 : image : lscr.io/linuxserver/mylar3:latest container_name : mylar3 environment : - PUID=1000 - PGID=1000 volumes : - /path/to/data:/config - /path/to/comics:/comics - /path/to/downloads:/downloads ports : - 8090:8090 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-mylar3/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = mylar3 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -p 8090 :8090 \\ -v /path/to/data:/config \\ -v /path/to/comics:/comics \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/mylar3:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-mylar3/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mylar3/#ports-p","text":"Parameter Function 8090 WebUI","title":"Ports (-p)"},{"location":"images/docker-mylar3/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-mylar3/#volume-mappings-v","text":"Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-mylar3/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-mylar3/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mylar3/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mylar3/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-mylar3/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mylar3/#support-info","text":"Shell access whilst the container is running: docker exec -it mylar3 /bin/bash To monitor the logs of the container in realtime: docker logs -f mylar3 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar3 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar3:latest","title":"Support Info"},{"location":"images/docker-mylar3/#versions","text":"12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3. 01.02.22: - Rebase to alpine 3.15. 02.11.21: - Rebase to alpine 3.14. Remove pathlib.py . 25.05.21: - Add libwebp support. 17.05.21: - Add linuxserver wheel index. 23.01.21: - Rebasing to alpine 3.13. 03.01.21: - Output mylar log to docker log. 21.12.20: - Release nightly tag based on commits to upstream python3-dev branch. 28.09.20: - Initial release.","title":"Versions"},{"location":"images/docker-mysql-workbench/","text":"linuxserver/mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : mysql-workbench : image : lscr.io/linuxserver/mysql-workbench:latest container_name : mysql-workbench environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 cap_add : - IPC_LOCK restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = mysql-workbench \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --cap-add = \"IPC_LOCK\" \\ --restart unless-stopped \\ lscr.io/linuxserver/mysql-workbench:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Mysql Workbench desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings. Miscellaneous Options Parameter Function --cap-add= Required for keyring functionality Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it mysql-workbench /bin/bash To monitor the logs of the container in realtime: docker logs -f mysql-workbench Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mysql-workbench Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mysql-workbench:latest Versions 15.09.22: - Migrate to s6v3. 26.07.22: - Rebase on jammy. 20.04.21: - Rebase on focal. 18.01.21: - Update libpython dependency. 26.03.20: - Initial release.","title":"mysql-workbench"},{"location":"images/docker-mysql-workbench/#linuxservermysql-workbench","text":"MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.","title":"linuxserver/mysql-workbench"},{"location":"images/docker-mysql-workbench/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-mysql-workbench/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-mysql-workbench/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-mysql-workbench/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : mysql-workbench : image : lscr.io/linuxserver/mysql-workbench:latest container_name : mysql-workbench environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 cap_add : - IPC_LOCK restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-mysql-workbench/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = mysql-workbench \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --cap-add = \"IPC_LOCK\" \\ --restart unless-stopped \\ lscr.io/linuxserver/mysql-workbench:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-mysql-workbench/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-mysql-workbench/#ports-p","text":"Parameter Function 3000 Mysql Workbench desktop gui.","title":"Ports (-p)"},{"location":"images/docker-mysql-workbench/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-mysql-workbench/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings.","title":"Volume Mappings (-v)"},{"location":"images/docker-mysql-workbench/#miscellaneous-options","text":"Parameter Function --cap-add= Required for keyring functionality","title":"Miscellaneous Options"},{"location":"images/docker-mysql-workbench/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-mysql-workbench/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-mysql-workbench/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-mysql-workbench/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-mysql-workbench/#support-info","text":"Shell access whilst the container is running: docker exec -it mysql-workbench /bin/bash To monitor the logs of the container in realtime: docker logs -f mysql-workbench Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mysql-workbench Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mysql-workbench:latest","title":"Support Info"},{"location":"images/docker-mysql-workbench/#versions","text":"15.09.22: - Migrate to s6v3. 26.07.22: - Rebase on jammy. 20.04.21: - Rebase on focal. 18.01.21: - Update libpython dependency. 26.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-nano-discord-bot/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/nano-discord-bot Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=nano-discord-bot \\ -e PUID=1000 \\ -e PGID=1000 \\ -e WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ \\ -e RPC_URL=https://nano.linuxserver.io:7077 \\ -e FAUCET_KEY=XXXXXXXXXXXXX \\ -e DISCORD_KEY=XXXXXXXXXXXXX \\ -e FAUCET_AMOUNT=\"1000\" \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lsiodev/nano-discord-bot docker-compose Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : nano-discord-bot : image : lsiodev/nano-discord-bot container_name : nano-discord-bot environment : - PUID=1000 - PGID=1000 - WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ - RPC_URL=https://nano.linuxserver.io:7077 - FAUCET_KEY=XXXXXXXXXXXXX - DISCORD_KEY=XXXXXXXXXXXXX - FAUCET_AMOUNT=\"1000\" volumes : - /path/to/data:/config restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ Hosted wallet endpoint to use. RPC_URL=https://nano.linuxserver.io:7077 RPC endpoint to publish blocks to and ingest account information. FAUCET_KEY=XXXXXXXXXXXXX The private key for your faucet account. DISCORD_KEY=XXXXXXXXXXXXX Discord api key for the bot. FAUCET_AMOUNT=\"1000\" Amount to distribute to individual Discord users in Nano. Volume Mappings ( -v ) Volume Function /config Database and Radarr configs Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here . Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above. Support Info Shell access whilst the container is running: docker exec -it nano-discord-bot /bin/bash To monitor the logs of the container in realtime: docker logs -f nano-discord-bot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-discord-bot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lsiodev/nano-discord-bot Versions 25.05.20: - Initial Release.","title":"nano-discord-bot"},{"location":"images/docker-nano-discord-bot/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-nano-discord-bot/#linuxservernano-discord-bot","text":"Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.","title":"linuxserver/nano-discord-bot"},{"location":"images/docker-nano-discord-bot/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-nano-discord-bot/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-nano-discord-bot/#docker","text":"docker create \\ --name=nano-discord-bot \\ -e PUID=1000 \\ -e PGID=1000 \\ -e WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ \\ -e RPC_URL=https://nano.linuxserver.io:7077 \\ -e FAUCET_KEY=XXXXXXXXXXXXX \\ -e DISCORD_KEY=XXXXXXXXXXXXX \\ -e FAUCET_AMOUNT=\"1000\" \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lsiodev/nano-discord-bot","title":"docker"},{"location":"images/docker-nano-discord-bot/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : nano-discord-bot : image : lsiodev/nano-discord-bot container_name : nano-discord-bot environment : - PUID=1000 - PGID=1000 - WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ - RPC_URL=https://nano.linuxserver.io:7077 - FAUCET_KEY=XXXXXXXXXXXXX - DISCORD_KEY=XXXXXXXXXXXXX - FAUCET_AMOUNT=\"1000\" volumes : - /path/to/data:/config restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-nano-discord-bot/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nano-discord-bot/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-nano-discord-bot/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ Hosted wallet endpoint to use. RPC_URL=https://nano.linuxserver.io:7077 RPC endpoint to publish blocks to and ingest account information. FAUCET_KEY=XXXXXXXXXXXXX The private key for your faucet account. DISCORD_KEY=XXXXXXXXXXXXX Discord api key for the bot. FAUCET_AMOUNT=\"1000\" Amount to distribute to individual Discord users in Nano.","title":"Environment Variables (-e)"},{"location":"images/docker-nano-discord-bot/#volume-mappings-v","text":"Volume Function /config Database and Radarr configs","title":"Volume Mappings (-v)"},{"location":"images/docker-nano-discord-bot/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nano-discord-bot/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nano-discord-bot/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-nano-discord-bot/#application-setup","text":"With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here .","title":"Application Setup"},{"location":"images/docker-nano-discord-bot/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.","title":"Docker Mods"},{"location":"images/docker-nano-discord-bot/#support-info","text":"Shell access whilst the container is running: docker exec -it nano-discord-bot /bin/bash To monitor the logs of the container in realtime: docker logs -f nano-discord-bot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-discord-bot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lsiodev/nano-discord-bot","title":"Support Info"},{"location":"images/docker-nano-discord-bot/#versions","text":"25.05.20: - Initial Release.","title":"Versions"},{"location":"images/docker-nano-wallet/","text":"linuxserver/nano-wallet Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. This container is a simple nginx wrapper for the light wallet located here . You will need to pass a valid RPC host when accessing this container. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information. Simply access the container at the URL: http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nano-wallet : image : lscr.io/linuxserver/nano-wallet:latest container_name : nano-wallet ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nano-wallet \\ -p 80 :80 \\ --restart unless-stopped \\ lscr.io/linuxserver/nano-wallet:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Webserver port Environment Variables ( -e ) Env Function Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nano-wallet /bin/bash To monitor the logs of the container in realtime: docker logs -f nano-wallet Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-wallet Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano-wallet:latest Versions 01.06.20: - Rebasing to alpine 3.12. 23.05.20: - Initial Release.","title":"nano-wallet"},{"location":"images/docker-nano-wallet/#linuxservernano-wallet","text":"Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. This container is a simple nginx wrapper for the light wallet located here . You will need to pass a valid RPC host when accessing this container.","title":"linuxserver/nano-wallet"},{"location":"images/docker-nano-wallet/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nano-wallet/#application-setup","text":"This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information. Simply access the container at the URL: http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT","title":"Application Setup"},{"location":"images/docker-nano-wallet/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nano-wallet/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nano-wallet : image : lscr.io/linuxserver/nano-wallet:latest container_name : nano-wallet ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nano-wallet/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nano-wallet \\ -p 80 :80 \\ --restart unless-stopped \\ lscr.io/linuxserver/nano-wallet:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nano-wallet/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nano-wallet/#ports-p","text":"Parameter Function 80 Webserver port","title":"Ports (-p)"},{"location":"images/docker-nano-wallet/#environment-variables-e","text":"Env Function","title":"Environment Variables (-e)"},{"location":"images/docker-nano-wallet/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-nano-wallet/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nano-wallet/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nano-wallet/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nano-wallet/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nano-wallet/#support-info","text":"Shell access whilst the container is running: docker exec -it nano-wallet /bin/bash To monitor the logs of the container in realtime: docker logs -f nano-wallet Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-wallet Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano-wallet:latest","title":"Support Info"},{"location":"images/docker-nano-wallet/#versions","text":"01.06.20: - Rebasing to alpine 3.12. 23.05.20: - Initial Release.","title":"Versions"},{"location":"images/docker-nano/","text":"linuxserver/nano Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Nano releases beta \u2705 Beta Nano releases Application Setup Your Genesis account By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000 , this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables: docker run --rm --entrypoint /genesis.sh linuxserver/nano Generating Genesis block !!!!!!! ACCOUNT INFO SAVE THIS INFORMATION IT WILL NOT BE SHOWN AGAIN !!!!!!!! Private Key: CD4CD6B1E5523D4B5AEDD2B1E5A447C6C6797E729A531A95F9AD7937FC7CD9EA Public Key: 2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D Account: nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Container Environment Values: -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\ -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\ -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\ -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\ These environment variables will be used for all of the peers in your payment network, but if you are running what you would consider a public or live network never share your private key even if you have drained the funds from that account it can be potentionally used to create valid forks. Even Better , you should never even trust our Docker image for generating a private key and open block. Do it on an airgapped machine and keep it on a paper wallet. RPC Proxy settings By default this container will enable RPC control and publish a custom service that acts as an RPC firewall giving you the ability to whitelist specific RPC calls and overide/add default values. The default proxy config is stored in /config/rpc-proxy.json : { \"port\":3000, \"httpsport\":3001, \"rpchost\":\"127.0.0.1\", \"rpcport\":7076, \"certfile\":\"/config/ssl/cert.crt\", \"keyfile\":\"/config/ssl/cert.key\", \"whitelist\":[ \"account_info\", \"account_history\", \"block_count\", \"block_info\", \"pending\", \"process\" ], \"overrides\":{ \"account-history\":{ \"count\":\"64\" }, \"pending\":{ \"count\":\"8\" } } } This should be a minimal amount of RPC access needed to run a local light wallet against this endpoint. If you plan on having your network users only run clientside light wallets (local blake2b block generation and block process call publishing) you should publically publish this port for access for both port 7076 and 7077. For functional light wallets on Https endpoints we will generate a self signed cert/key combo but you should add the ones associated with your domain. This will allow yours and other https hosted light wallets to hit your RPC endpoint clientside from the users web browser. Outside of potential https tunneling and actual object parsing (will remove duplicate keys) this is not a conventional API, it simply acts as a firewall and will send and return data just like a local RPC server would. The goal is to be compatible with any existing Nano software if the developers decide to add the ability to connect to alternative network endpoints. Our Proxy has not been audited by any security team and is provided as is, though we make the best effort to keep it simple and secure Node configuration via environment Before you get started please review the configuration docs here We will pass the CLI_OPTIONS to the node, here is a run command example: -e CLI_OPTIONS='--config node.preconfigured_peers=[\"peering.yourhost.com\",\"peering.yourhost2.com\"] \\ --config node.enable_voting=true' There are many options to know here to run an actual live node especially peering and voting, again please review the docs if you plan to run something outside of a local setup. Quickstart Guide Here we are going to cover the bare minimum commands needed to spinup a local payment network and wallet. First spinup your containers: docker run -d \\ --name node \\ -e CLI_OPTIONS='--config node.enable_voting=true' \\ -p 7076:3000 \\ --restart unless-stopped \\ linuxserver/nano docker run -d \\ --name=wallet \\ -p 80:80 \\ --restart unless-stopped \\ linuxserver/nano-wallet Then unlock the Genesis funds on the local node to allow it to confirm transactions: docker exec -it node bash root@f1df092971f0:/# curl -d '{ \"action\": \"wallet_create\" }' localhost:7076 { \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\" } root@f1df092971f0:/# curl -d '{ \"action\": \"wallet_add\", \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\", \"key\": \"0000000000000000000000000000000000000000000000000000000000000000\" }' localhost:7076 { \"account\": \"nano_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc\" } Here we are using the default private key of 0000000000000000000000000000000000000000000000000000000000000000 for the image. Navigate to http://localhost/#/localhost and enter this key. You should be greeted by the genesis account wallet with 340.28 Million Nano. From here you can generate new wallets from the home screen and send/receive funds on your local network. Now you will be running an insecure centralized network with a single voting representative and a zero security private key using the commands above. To spinup a standard private or even public network you should read up on Nano's documentation HERE and continue reading the network design section below. Network design There are 4 main concepts to grasp from a network standpoint as far as types of endpoints. Before we get started here is a basic network diagram: Principle nodes and voting representatives Principle nodes are network representatives with the ability to vote due to having a certain threshold of funds unlocked on that node or pointed to that unlocked address. These nodes should be as airgapped as possible while still being an active 24/7 peer of the network. From a tecnical perspective this is a node with an account private key that either has the funds it needs itself or enough users have pointed their accounts to it as a representative. In a live and secure configuration to protect the funds of this account you would use an inactive private key account with the funds in it and locally sign a change of representative block to point to the always online representative. These nodes should never process external RPC calls even on a local network, the same rules go for any node with a local unlocked wallet. Keep in mind the key to the security of the network is that 51% of the funds are pointed to trusted representatives that will generally not argue about chain forks. In most deployments the best bet is to heavily centralize your voting nodes, this is unless you are intentionally trying to build a distributed ledger and security model like the main Nano live net. Achieving that will be a long and difficult task. Network peers To a normal user simply transacting on the network using off the shelf tools like a web wallet and web based block explorers is generally all that is required. They get a number in a ledger somewhere and are able to locally sign and publish blocks using their private key using your published RPC endpoints. For advanced users and just to generally make the network more robust, network operators should promote people running their own nodes. Using this image a network peer simply needs to run a docker run command with your pre-configured variables. IE given the generation example from above in the Your Genesis account section: docker create \\ --name=nano \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e PEER_HOST=peering.mydomain.com \\ -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\ -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\ -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\ -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\ -p 8075:8075 \\ -p 7076:3000 \\ -p 7077:3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ linuxserver/nano When the container spins up it will reach out to the node to bootstrap it's local ledger from peering.mydomain.com . This node once fully synced will be able to run local RPC commands to plug into a wallet and default Nano node wallet commands for automated pocketing of transactions etc. It will also get a list of other peers on the network from it's initial network peering and start participating in your distributed cryptocurrency network. Public RPC endpoints The key to users going to a webpage and managing the funds on your network is the ability to get blockchain information and publish new blocks to theirs. As mentioned earlier we bundle a basic firewall with a core set of RPC functions whitelisted that should be safe to expose publically. From a network design perspective these nodes should be purely what you would consider client peers and never have any wallets registered or private keys stored on them. Also for redundancy optmimally these peers should be run in a cluster behind a load balancer. For standard nodes you are building out a large P2P network, but in the case of the RPC endpoint and specifically the URL the end user is going to pass when accessing their wallet it is up to you to make that resilient. Clientside javascript wallet Currently we publish a pure javascript clientside wallet located here: https://github.com/linuxserver/nano-wallet It is designed to be run 100% clientside in any web browser and use public RPC endpoints to hook into any network and conduct transactions by locally signing then publishing the result. This can be hosted locally with any simple webserver and pointed to a locally run peer, but for full functionality we reccomend providing a public Https URL with these files along with plugging in legitamite SSL certificates into your RPC endpoints running on 7077. Running a node on the LinuxServer network We maintain our own network which users can get funds to transact on from our Discord server. If you would like to run a node on our network here is our Docker run command: docker create \\ --name=lsio-node \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e PEER_HOST=peering.linuxserver.io \\ -e LIVE_GENESIS_PUB=79F2E157B5667F1C8B6CCB6DF691DAC032B85DEC39E231D29976DCED05F5B1BE \\ -e LIVE_GENESIS_ACCOUNT=nano_1yhkw7ducsmz5k7pskufytaxoi3kq3gyrgh489bbkxpwxn4zdefyn4rmrrkk \\ -e LIVE_GENESIS_WORK=c51204c6b69384cb \\ -e LIVE_GENESIS_SIG=90DDE7B4DC038811180FF5DDE8594F1774542A7AADE3DB71A57AA38A5AED42672E1E8D7ACFAC315BDB0EB5DCB542C610B9C49B2560AE575073855259AF065509 \\ -p 8075:8075 \\ -p 7076:3000 \\ -p 7077:3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ linuxserver/nano Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nano : image : lscr.io/linuxserver/nano:latest container_name : nano environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PEER_HOST=localhost #optional - LIVE_GENESIS_PUB=GENESIS_PUBLIC #optional - LIVE_GENESIS_ACCOUNT=nano_xxxxxx #optional - LIVE_GENESIS_WORK=WORK_FOR_BLOCK #optional - LIVE_GENESIS_SIG=BLOCK_SIGNATURE #optional - CLI_OPTIONS=--config node.enable_voting=true #optional - LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z #optional volumes : - /path/to/data:/config ports : - 8075:8075 - 7076:3000 - 7077:3001 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nano \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PEER_HOST = localhost ` #optional` \\ -e LIVE_GENESIS_PUB = GENESIS_PUBLIC ` #optional` \\ -e LIVE_GENESIS_ACCOUNT = nano_xxxxxx ` #optional` \\ -e LIVE_GENESIS_WORK = WORK_FOR_BLOCK ` #optional` \\ -e LIVE_GENESIS_SIG = BLOCK_SIGNATURE ` #optional` \\ -e CLI_OPTIONS = --config node.enable_voting = true ` #optional` \\ -e LMDB_BOOTSTRAP_URL = http://example.com/Nano_64_version_20.7z ` #optional` \\ -p 8075 :8075 \\ -p 7076 :3000 \\ -p 7077 :3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nano:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8075 Nano communication port 3000 RPC interface filtered through a proxy 3001 Https RPC interface filtered through a proxy Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PEER_HOST=localhost Default peer host (can be overidden with an array by command line options) LIVE_GENESIS_PUB=GENESIS_PUBLIC Genesis block public key LIVE_GENESIS_ACCOUNT=nano_xxxxxx Genesis block account LIVE_GENESIS_WORK=WORK_FOR_BLOCK Genesis block proof of work LIVE_GENESIS_SIG=BLOCK_SIGNATURE Genesis block signature CLI_OPTIONS=--config node.enable_voting=true Node run command cli args LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z HTTP/HTTPS endpoint to download a 7z file with the data.ldb to bootstrap to this node Volume Mappings ( -v ) Volume Function /config Main storage for config and blockchain Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nano /bin/bash To monitor the logs of the container in realtime: docker logs -f nano Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano:latest Versions 02.06.20: - Rebase to Alpine 3.12. 28.05.20: - Add beta tag. 17.05.20: - Initial Release.","title":"nano"},{"location":"images/docker-nano/#linuxservernano","text":"Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.","title":"linuxserver/nano"},{"location":"images/docker-nano/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-nano/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Nano releases beta \u2705 Beta Nano releases","title":"Version Tags"},{"location":"images/docker-nano/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-nano/#your-genesis-account","text":"By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000 , this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables: docker run --rm --entrypoint /genesis.sh linuxserver/nano Generating Genesis block !!!!!!! ACCOUNT INFO SAVE THIS INFORMATION IT WILL NOT BE SHOWN AGAIN !!!!!!!! Private Key: CD4CD6B1E5523D4B5AEDD2B1E5A447C6C6797E729A531A95F9AD7937FC7CD9EA Public Key: 2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D Account: nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Container Environment Values: -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\ -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\ -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\ -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\ These environment variables will be used for all of the peers in your payment network, but if you are running what you would consider a public or live network never share your private key even if you have drained the funds from that account it can be potentionally used to create valid forks. Even Better , you should never even trust our Docker image for generating a private key and open block. Do it on an airgapped machine and keep it on a paper wallet.","title":"Your Genesis account"},{"location":"images/docker-nano/#rpc-proxy-settings","text":"By default this container will enable RPC control and publish a custom service that acts as an RPC firewall giving you the ability to whitelist specific RPC calls and overide/add default values. The default proxy config is stored in /config/rpc-proxy.json : { \"port\":3000, \"httpsport\":3001, \"rpchost\":\"127.0.0.1\", \"rpcport\":7076, \"certfile\":\"/config/ssl/cert.crt\", \"keyfile\":\"/config/ssl/cert.key\", \"whitelist\":[ \"account_info\", \"account_history\", \"block_count\", \"block_info\", \"pending\", \"process\" ], \"overrides\":{ \"account-history\":{ \"count\":\"64\" }, \"pending\":{ \"count\":\"8\" } } } This should be a minimal amount of RPC access needed to run a local light wallet against this endpoint. If you plan on having your network users only run clientside light wallets (local blake2b block generation and block process call publishing) you should publically publish this port for access for both port 7076 and 7077. For functional light wallets on Https endpoints we will generate a self signed cert/key combo but you should add the ones associated with your domain. This will allow yours and other https hosted light wallets to hit your RPC endpoint clientside from the users web browser. Outside of potential https tunneling and actual object parsing (will remove duplicate keys) this is not a conventional API, it simply acts as a firewall and will send and return data just like a local RPC server would. The goal is to be compatible with any existing Nano software if the developers decide to add the ability to connect to alternative network endpoints. Our Proxy has not been audited by any security team and is provided as is, though we make the best effort to keep it simple and secure","title":"RPC Proxy settings"},{"location":"images/docker-nano/#node-configuration-via-environment","text":"Before you get started please review the configuration docs here We will pass the CLI_OPTIONS to the node, here is a run command example: -e CLI_OPTIONS='--config node.preconfigured_peers=[\"peering.yourhost.com\",\"peering.yourhost2.com\"] \\ --config node.enable_voting=true' There are many options to know here to run an actual live node especially peering and voting, again please review the docs if you plan to run something outside of a local setup.","title":"Node configuration via environment"},{"location":"images/docker-nano/#quickstart-guide","text":"Here we are going to cover the bare minimum commands needed to spinup a local payment network and wallet. First spinup your containers: docker run -d \\ --name node \\ -e CLI_OPTIONS='--config node.enable_voting=true' \\ -p 7076:3000 \\ --restart unless-stopped \\ linuxserver/nano docker run -d \\ --name=wallet \\ -p 80:80 \\ --restart unless-stopped \\ linuxserver/nano-wallet Then unlock the Genesis funds on the local node to allow it to confirm transactions: docker exec -it node bash root@f1df092971f0:/# curl -d '{ \"action\": \"wallet_create\" }' localhost:7076 { \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\" } root@f1df092971f0:/# curl -d '{ \"action\": \"wallet_add\", \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\", \"key\": \"0000000000000000000000000000000000000000000000000000000000000000\" }' localhost:7076 { \"account\": \"nano_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc\" } Here we are using the default private key of 0000000000000000000000000000000000000000000000000000000000000000 for the image. Navigate to http://localhost/#/localhost and enter this key. You should be greeted by the genesis account wallet with 340.28 Million Nano. From here you can generate new wallets from the home screen and send/receive funds on your local network. Now you will be running an insecure centralized network with a single voting representative and a zero security private key using the commands above. To spinup a standard private or even public network you should read up on Nano's documentation HERE and continue reading the network design section below.","title":"Quickstart Guide"},{"location":"images/docker-nano/#network-design","text":"There are 4 main concepts to grasp from a network standpoint as far as types of endpoints. Before we get started here is a basic network diagram:","title":"Network design"},{"location":"images/docker-nano/#principle-nodes-and-voting-representatives","text":"Principle nodes are network representatives with the ability to vote due to having a certain threshold of funds unlocked on that node or pointed to that unlocked address. These nodes should be as airgapped as possible while still being an active 24/7 peer of the network. From a tecnical perspective this is a node with an account private key that either has the funds it needs itself or enough users have pointed their accounts to it as a representative. In a live and secure configuration to protect the funds of this account you would use an inactive private key account with the funds in it and locally sign a change of representative block to point to the always online representative. These nodes should never process external RPC calls even on a local network, the same rules go for any node with a local unlocked wallet. Keep in mind the key to the security of the network is that 51% of the funds are pointed to trusted representatives that will generally not argue about chain forks. In most deployments the best bet is to heavily centralize your voting nodes, this is unless you are intentionally trying to build a distributed ledger and security model like the main Nano live net. Achieving that will be a long and difficult task.","title":"Principle nodes and voting representatives"},{"location":"images/docker-nano/#network-peers","text":"To a normal user simply transacting on the network using off the shelf tools like a web wallet and web based block explorers is generally all that is required. They get a number in a ledger somewhere and are able to locally sign and publish blocks using their private key using your published RPC endpoints. For advanced users and just to generally make the network more robust, network operators should promote people running their own nodes. Using this image a network peer simply needs to run a docker run command with your pre-configured variables. IE given the generation example from above in the Your Genesis account section: docker create \\ --name=nano \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e PEER_HOST=peering.mydomain.com \\ -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\ -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\ -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\ -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\ -p 8075:8075 \\ -p 7076:3000 \\ -p 7077:3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ linuxserver/nano When the container spins up it will reach out to the node to bootstrap it's local ledger from peering.mydomain.com . This node once fully synced will be able to run local RPC commands to plug into a wallet and default Nano node wallet commands for automated pocketing of transactions etc. It will also get a list of other peers on the network from it's initial network peering and start participating in your distributed cryptocurrency network.","title":"Network peers"},{"location":"images/docker-nano/#public-rpc-endpoints","text":"The key to users going to a webpage and managing the funds on your network is the ability to get blockchain information and publish new blocks to theirs. As mentioned earlier we bundle a basic firewall with a core set of RPC functions whitelisted that should be safe to expose publically. From a network design perspective these nodes should be purely what you would consider client peers and never have any wallets registered or private keys stored on them. Also for redundancy optmimally these peers should be run in a cluster behind a load balancer. For standard nodes you are building out a large P2P network, but in the case of the RPC endpoint and specifically the URL the end user is going to pass when accessing their wallet it is up to you to make that resilient.","title":"Public RPC endpoints"},{"location":"images/docker-nano/#clientside-javascript-wallet","text":"Currently we publish a pure javascript clientside wallet located here: https://github.com/linuxserver/nano-wallet It is designed to be run 100% clientside in any web browser and use public RPC endpoints to hook into any network and conduct transactions by locally signing then publishing the result. This can be hosted locally with any simple webserver and pointed to a locally run peer, but for full functionality we reccomend providing a public Https URL with these files along with plugging in legitamite SSL certificates into your RPC endpoints running on 7077.","title":"Clientside javascript wallet"},{"location":"images/docker-nano/#running-a-node-on-the-linuxserver-network","text":"We maintain our own network which users can get funds to transact on from our Discord server. If you would like to run a node on our network here is our Docker run command: docker create \\ --name=lsio-node \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e PEER_HOST=peering.linuxserver.io \\ -e LIVE_GENESIS_PUB=79F2E157B5667F1C8B6CCB6DF691DAC032B85DEC39E231D29976DCED05F5B1BE \\ -e LIVE_GENESIS_ACCOUNT=nano_1yhkw7ducsmz5k7pskufytaxoi3kq3gyrgh489bbkxpwxn4zdefyn4rmrrkk \\ -e LIVE_GENESIS_WORK=c51204c6b69384cb \\ -e LIVE_GENESIS_SIG=90DDE7B4DC038811180FF5DDE8594F1774542A7AADE3DB71A57AA38A5AED42672E1E8D7ACFAC315BDB0EB5DCB542C610B9C49B2560AE575073855259AF065509 \\ -p 8075:8075 \\ -p 7076:3000 \\ -p 7077:3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ linuxserver/nano","title":"Running a node on the LinuxServer network"},{"location":"images/docker-nano/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nano/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nano : image : lscr.io/linuxserver/nano:latest container_name : nano environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PEER_HOST=localhost #optional - LIVE_GENESIS_PUB=GENESIS_PUBLIC #optional - LIVE_GENESIS_ACCOUNT=nano_xxxxxx #optional - LIVE_GENESIS_WORK=WORK_FOR_BLOCK #optional - LIVE_GENESIS_SIG=BLOCK_SIGNATURE #optional - CLI_OPTIONS=--config node.enable_voting=true #optional - LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z #optional volumes : - /path/to/data:/config ports : - 8075:8075 - 7076:3000 - 7077:3001 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nano/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nano \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PEER_HOST = localhost ` #optional` \\ -e LIVE_GENESIS_PUB = GENESIS_PUBLIC ` #optional` \\ -e LIVE_GENESIS_ACCOUNT = nano_xxxxxx ` #optional` \\ -e LIVE_GENESIS_WORK = WORK_FOR_BLOCK ` #optional` \\ -e LIVE_GENESIS_SIG = BLOCK_SIGNATURE ` #optional` \\ -e CLI_OPTIONS = --config node.enable_voting = true ` #optional` \\ -e LMDB_BOOTSTRAP_URL = http://example.com/Nano_64_version_20.7z ` #optional` \\ -p 8075 :8075 \\ -p 7076 :3000 \\ -p 7077 :3001 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nano:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nano/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nano/#ports-p","text":"Parameter Function 8075 Nano communication port 3000 RPC interface filtered through a proxy 3001 Https RPC interface filtered through a proxy","title":"Ports (-p)"},{"location":"images/docker-nano/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PEER_HOST=localhost Default peer host (can be overidden with an array by command line options) LIVE_GENESIS_PUB=GENESIS_PUBLIC Genesis block public key LIVE_GENESIS_ACCOUNT=nano_xxxxxx Genesis block account LIVE_GENESIS_WORK=WORK_FOR_BLOCK Genesis block proof of work LIVE_GENESIS_SIG=BLOCK_SIGNATURE Genesis block signature CLI_OPTIONS=--config node.enable_voting=true Node run command cli args LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z HTTP/HTTPS endpoint to download a 7z file with the data.ldb to bootstrap to this node","title":"Environment Variables (-e)"},{"location":"images/docker-nano/#volume-mappings-v","text":"Volume Function /config Main storage for config and blockchain","title":"Volume Mappings (-v)"},{"location":"images/docker-nano/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nano/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nano/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nano/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nano/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nano/#support-info","text":"Shell access whilst the container is running: docker exec -it nano /bin/bash To monitor the logs of the container in realtime: docker logs -f nano Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano:latest","title":"Support Info"},{"location":"images/docker-nano/#versions","text":"02.06.20: - Rebase to Alpine 3.12. 28.05.20: - Add beta tag. 17.05.20: - Initial Release.","title":"Versions"},{"location":"images/docker-netbootxyz/","text":"linuxserver/netbootxyz Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Web application for full self hosting tftp \u2705 TFTP server only with NETBOOT.XYZ boot files Application Setup To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz . If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page . Router Setup Examples PFSense Services -> DHCP Server Set both the option for \"TFTP Server\" and the options under the Advanced \"Network Booting\" section. * check enable * Next server- IP used for TFTP Server * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi OPNsense Services -> DHCP Server Under the Advanced \"Network Booting\" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi Unifi Security Gateway (with the controller) Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe EdgeOS/VyOS Connect via SSH configure set service dhcp-server use-dnsmasq enable set service dns forwarding options \"dhcp-match=set:bios,60,PXEClient:Arch:00000\" set service dns forwarding options \"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi32,60,PXEClient:Arch:00002\" set service dns forwarding options \"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\" set service dns forwarding options \"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64,60,PXEClient:Arch:00007\" set service dns forwarding options \"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\" set service dns forwarding options \"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\" set service dns forwarding options \"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\" commit; save DD-WRT Administration -> Services -> Additional DNSMasq Options Set the following lines: dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi32-1,60,PXEClient:Arch:00006 dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-1,60,PXEClient:Arch:00008 dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-2,60,PXEClient:Arch:00009 dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP Tomato Advanced -> DHCP/DNS -> Dnsmasq Custom configuration Set the following lines: dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi32-1,60,PXEClient:Arch:00006 dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-1,60,PXEClient:Arch:00008 dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-2,60,PXEClient:Arch:00009 dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP OpenWRT uci set dhcp.@dnsmasq[0].dhcp_match=set:bios,60,PXEClient:Arch:00000 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32,60,PXEClient:Arch:00002 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32-1,60,PXEClient:Arch:00006 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64,60,PXEClient:Arch:00007 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-1,60,PXEClient:Arch:00008 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-2,60,PXEClient:Arch:00009 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP uci commit /etc/init.d/dnsmasq restart Microsoft Server DHCP Run the DHCP program Under Scope/Scope Options check option 066 and enter the FQDN or IP of your TFTP boot server check option 067 and enter one of the following bootfile names: Default BIOS file name- netboot.xyz.kpxe UEFI 32 bit file name- netboot.xyz.efi UEFI 64 bit file name- netboot.xyz.efi Anything else from a router standpoint is a crapshoot for supporting Dnsmasq options or proprietary PXE boot options, check Google for support (try your exact router model number with 'pxe boot') or look into setting up your own DHCP server in Linux. This image also contains netboot.xyz.efi which can be used to boot using UEFI network boot. The UEFI boot and menu will have limited functionality if you choose to use it. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : netbootxyz : image : lscr.io/linuxserver/netbootxyz:latest container_name : netbootxyz environment : - PUID=1000 - PGID=1000 - MENU_VERSION=1.9.9 #optional - PORT_RANGE=30000:30010 #optional - SUBFOLDER=/ #optional volumes : - /path/to/config:/config - /path/to/assets:/assets #optional ports : - 3000:3000 - 69:69/udp - 8080:80 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = netbootxyz \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MENU_VERSION = 1 .9.9 ` #optional` \\ -e PORT_RANGE = 30000 :30010 ` #optional` \\ -e SUBFOLDER = / ` #optional` \\ -p 3000 :3000 \\ -p 69 :69/udp \\ -p 8080 :80 ` #optional` \\ -v /path/to/config:/config \\ -v /path/to/assets:/assets ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/netbootxyz:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Web configuration interface. 69/udp TFTP Port. 80 NGINX server for hosting assets. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest) PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia) SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/) Volume Mappings ( -v ) Volume Function /config Storage for boot menu files and web application config /assets Storage for NETBOOT.XYZ bootable assets (live CDs and other files) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it netbootxyz /bin/bash To monitor the logs of the container in realtime: docker logs -f netbootxyz Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbootxyz Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbootxyz:latest Versions 12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3. 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 13.12.19: - Swapping latest tag over to webapp stack for management. 10.12.19: - Adding tftp branch to provide tftp only option to latest users. 22.10.19: - Initial release.","title":"netbootxyz"},{"location":"images/docker-netbootxyz/#linuxservernetbootxyz","text":"Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.","title":"linuxserver/netbootxyz"},{"location":"images/docker-netbootxyz/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-netbootxyz/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Web application for full self hosting tftp \u2705 TFTP server only with NETBOOT.XYZ boot files","title":"Version Tags"},{"location":"images/docker-netbootxyz/#application-setup","text":"To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz . If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page .","title":"Application Setup"},{"location":"images/docker-netbootxyz/#router-setup-examples","text":"","title":"Router Setup Examples"},{"location":"images/docker-netbootxyz/#pfsense","text":"Services -> DHCP Server Set both the option for \"TFTP Server\" and the options under the Advanced \"Network Booting\" section. * check enable * Next server- IP used for TFTP Server * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi","title":"PFSense"},{"location":"images/docker-netbootxyz/#opnsense","text":"Services -> DHCP Server Under the Advanced \"Network Booting\" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi","title":"OPNsense"},{"location":"images/docker-netbootxyz/#unifi-security-gateway-with-the-controller","text":"Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe","title":"Unifi Security Gateway (with the controller)"},{"location":"images/docker-netbootxyz/#edgeosvyos","text":"Connect via SSH configure set service dhcp-server use-dnsmasq enable set service dns forwarding options \"dhcp-match=set:bios,60,PXEClient:Arch:00000\" set service dns forwarding options \"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi32,60,PXEClient:Arch:00002\" set service dns forwarding options \"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\" set service dns forwarding options \"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64,60,PXEClient:Arch:00007\" set service dns forwarding options \"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\" set service dns forwarding options \"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\" set service dns forwarding options \"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\" set service dns forwarding options \"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\" commit; save","title":"EdgeOS/VyOS"},{"location":"images/docker-netbootxyz/#dd-wrt","text":"Administration -> Services -> Additional DNSMasq Options Set the following lines: dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi32-1,60,PXEClient:Arch:00006 dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-1,60,PXEClient:Arch:00008 dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-2,60,PXEClient:Arch:00009 dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP","title":"DD-WRT"},{"location":"images/docker-netbootxyz/#tomato","text":"Advanced -> DHCP/DNS -> Dnsmasq Custom configuration Set the following lines: dhcp-match=set:bios,60,PXEClient:Arch:00000 dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP dhcp-match=set:efi32,60,PXEClient:Arch:00002 dhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi32-1,60,PXEClient:Arch:00006 dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64,60,PXEClient:Arch:00007 dhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-1,60,PXEClient:Arch:00008 dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP dhcp-match=set:efi64-2,60,PXEClient:Arch:00009 dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP","title":"Tomato"},{"location":"images/docker-netbootxyz/#openwrt","text":"uci set dhcp.@dnsmasq[0].dhcp_match=set:bios,60,PXEClient:Arch:00000 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32,60,PXEClient:Arch:00002 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi32-1,60,PXEClient:Arch:00006 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64,60,PXEClient:Arch:00007 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-1,60,PXEClient:Arch:00008 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP uci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-2,60,PXEClient:Arch:00009 uci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP uci commit /etc/init.d/dnsmasq restart","title":"OpenWRT"},{"location":"images/docker-netbootxyz/#microsoft-server-dhcp","text":"Run the DHCP program Under Scope/Scope Options check option 066 and enter the FQDN or IP of your TFTP boot server check option 067 and enter one of the following bootfile names: Default BIOS file name- netboot.xyz.kpxe UEFI 32 bit file name- netboot.xyz.efi UEFI 64 bit file name- netboot.xyz.efi Anything else from a router standpoint is a crapshoot for supporting Dnsmasq options or proprietary PXE boot options, check Google for support (try your exact router model number with 'pxe boot') or look into setting up your own DHCP server in Linux. This image also contains netboot.xyz.efi which can be used to boot using UEFI network boot. The UEFI boot and menu will have limited functionality if you choose to use it.","title":"Microsoft Server DHCP"},{"location":"images/docker-netbootxyz/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-netbootxyz/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : netbootxyz : image : lscr.io/linuxserver/netbootxyz:latest container_name : netbootxyz environment : - PUID=1000 - PGID=1000 - MENU_VERSION=1.9.9 #optional - PORT_RANGE=30000:30010 #optional - SUBFOLDER=/ #optional volumes : - /path/to/config:/config - /path/to/assets:/assets #optional ports : - 3000:3000 - 69:69/udp - 8080:80 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-netbootxyz/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = netbootxyz \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e MENU_VERSION = 1 .9.9 ` #optional` \\ -e PORT_RANGE = 30000 :30010 ` #optional` \\ -e SUBFOLDER = / ` #optional` \\ -p 3000 :3000 \\ -p 69 :69/udp \\ -p 8080 :80 ` #optional` \\ -v /path/to/config:/config \\ -v /path/to/assets:/assets ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/netbootxyz:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-netbootxyz/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-netbootxyz/#ports-p","text":"Parameter Function 3000 Web configuration interface. 69/udp TFTP Port. 80 NGINX server for hosting assets.","title":"Ports (-p)"},{"location":"images/docker-netbootxyz/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest) PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia) SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/)","title":"Environment Variables (-e)"},{"location":"images/docker-netbootxyz/#volume-mappings-v","text":"Volume Function /config Storage for boot menu files and web application config /assets Storage for NETBOOT.XYZ bootable assets (live CDs and other files)","title":"Volume Mappings (-v)"},{"location":"images/docker-netbootxyz/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-netbootxyz/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-netbootxyz/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-netbootxyz/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-netbootxyz/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-netbootxyz/#support-info","text":"Shell access whilst the container is running: docker exec -it netbootxyz /bin/bash To monitor the logs of the container in realtime: docker logs -f netbootxyz Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbootxyz Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbootxyz:latest","title":"Support Info"},{"location":"images/docker-netbootxyz/#versions","text":"12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3. 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 13.12.19: - Swapping latest tag over to webapp stack for management. 10.12.19: - Adding tftp branch to provide tftp only option to latest users. 22.10.19: - Initial release.","title":"Versions"},{"location":"images/docker-netbox/","text":"linuxserver/netbox Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Netbox requires a postgres database and a redis instance. Access the WebUI at :8000. For more information, check out NetBox . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : netbox : image : lscr.io/linuxserver/netbox:latest container_name : netbox environment : - PUID=1000 - PGID=1000 - TZ= - SUPERUSER_EMAIL= - SUPERUSER_PASSWORD= - ALLOWED_HOST= - DB_NAME= - DB_USER= - DB_PASSWORD= - DB_HOST= - DB_PORT= - REDIS_HOST= - REDIS_PORT= - REDIS_PASSWORD= - REDIS_DB_TASK= - REDIS_DB_CACHE= - BASE_PATH= #optional - REMOTE_AUTH_ENABLED= #optional - REMOTE_AUTH_BACKEND= #optional - REMOTE_AUTH_HEADER= #optional - REMOTE_AUTH_AUTO_CREATE_USER= #optional - REMOTE_AUTH_DEFAULT_GROUPS= #optional - REMOTE_AUTH_DEFAULT_PERMISSIONS= #optional volumes : - :/config ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = netbox \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = \\ -e SUPERUSER_EMAIL = \\ -e SUPERUSER_PASSWORD = \\ -e ALLOWED_HOST = \\ -e DB_NAME = \\ -e DB_USER = \\ -e DB_PASSWORD = \\ -e DB_HOST = \\ -e DB_PORT = \\ -e REDIS_HOST = \\ -e REDIS_PORT = \\ -e REDIS_PASSWORD = \\ -e REDIS_DB_TASK = \\ -e REDIS_DB_CACHE = \\ -e BASE_PATH = ` #optional` \\ -e REMOTE_AUTH_ENABLED = ` #optional` \\ -e REMOTE_AUTH_BACKEND = ` #optional` \\ -e REMOTE_AUTH_HEADER = ` #optional` \\ -e REMOTE_AUTH_AUTO_CREATE_USER = ` #optional` \\ -e REMOTE_AUTH_DEFAULT_GROUPS = ` #optional` \\ -e REMOTE_AUTH_DEFAULT_PERMISSIONS = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/netbox:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 will map the container's port 8000 to port 8000 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= Timezone (i.e., America/New_York) SUPERUSER_EMAIL= Email address for admin account SUPERUSER_PASSWORD= Password for admin account ALLOWED_HOST= The hostname you will use to access the app (i.e., netbox.example.com) DB_NAME= Database name (default: netbox) DB_USER= Database user DB_PASSWORD= Database password DB_HOST= Database host (default: postgres) DB_PORT= Database port (defaul: 5432) REDIS_HOST= Redis host (default: redis) REDIS_PORT= Redis port number (default: 6379) REDIS_PASSWORD= Redis password (default: none) REDIS_DB_TASK= Redis database ID for tasks (default: 0) REDIS_DB_CACHE= Redis database ID for caching (default: 1) BASE_PATH= The path you will use to access the app (i.e., /netbox, optional, default: none) REMOTE_AUTH_ENABLED= Enable remote authentication (optional, default: False) REMOTE_AUTH_BACKEND= Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend) REMOTE_AUTH_HEADER= Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER) REMOTE_AUTH_AUTO_CREATE_USER= If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False) REMOTE_AUTH_DEFAULT_GROUPS= The list of groups to assign a new user account when created using remote authentication (optional, default: []) REMOTE_AUTH_DEFAULT_PERMISSIONS= A mapping of permissions to assign a new user account when created using remote authentication (optional, default: {}) Volume Mappings ( -v ) Volume Function /config config directory volume mapping Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it netbox /bin/bash To monitor the logs of the container in realtime: docker logs -f netbox Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbox Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbox:latest Versions 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 01.08.22: - Remove py3-pillow, add tiff to fix deps. 26.07.22: - Add py3-pillow package back on arm to fix build issue. 10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0. 10.12.21: - Rebase to Alpine 3.15. 26.04.21: - Added Redis database environment variables. 03.02.21: - Added remote authentication environment variables. 02.01.21: - Added BASE_PATH environment variable. 23.08.20: - Initial Release.","title":"netbox"},{"location":"images/docker-netbox/#linuxservernetbox","text":"Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.","title":"linuxserver/netbox"},{"location":"images/docker-netbox/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-netbox/#application-setup","text":"Netbox requires a postgres database and a redis instance. Access the WebUI at :8000. For more information, check out NetBox .","title":"Application Setup"},{"location":"images/docker-netbox/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-netbox/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : netbox : image : lscr.io/linuxserver/netbox:latest container_name : netbox environment : - PUID=1000 - PGID=1000 - TZ= - SUPERUSER_EMAIL= - SUPERUSER_PASSWORD= - ALLOWED_HOST= - DB_NAME= - DB_USER= - DB_PASSWORD= - DB_HOST= - DB_PORT= - REDIS_HOST= - REDIS_PORT= - REDIS_PASSWORD= - REDIS_DB_TASK= - REDIS_DB_CACHE= - BASE_PATH= #optional - REMOTE_AUTH_ENABLED= #optional - REMOTE_AUTH_BACKEND= #optional - REMOTE_AUTH_HEADER= #optional - REMOTE_AUTH_AUTO_CREATE_USER= #optional - REMOTE_AUTH_DEFAULT_GROUPS= #optional - REMOTE_AUTH_DEFAULT_PERMISSIONS= #optional volumes : - :/config ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-netbox/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = netbox \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = \\ -e SUPERUSER_EMAIL = \\ -e SUPERUSER_PASSWORD = \\ -e ALLOWED_HOST = \\ -e DB_NAME = \\ -e DB_USER = \\ -e DB_PASSWORD = \\ -e DB_HOST = \\ -e DB_PORT = \\ -e REDIS_HOST = \\ -e REDIS_PORT = \\ -e REDIS_PASSWORD = \\ -e REDIS_DB_TASK = \\ -e REDIS_DB_CACHE = \\ -e BASE_PATH = ` #optional` \\ -e REMOTE_AUTH_ENABLED = ` #optional` \\ -e REMOTE_AUTH_BACKEND = ` #optional` \\ -e REMOTE_AUTH_HEADER = ` #optional` \\ -e REMOTE_AUTH_AUTO_CREATE_USER = ` #optional` \\ -e REMOTE_AUTH_DEFAULT_GROUPS = ` #optional` \\ -e REMOTE_AUTH_DEFAULT_PERMISSIONS = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/netbox:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-netbox/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-netbox/#ports-p","text":"Parameter Function 8000 will map the container's port 8000 to port 8000 on the host","title":"Ports (-p)"},{"location":"images/docker-netbox/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= Timezone (i.e., America/New_York) SUPERUSER_EMAIL= Email address for admin account SUPERUSER_PASSWORD= Password for admin account ALLOWED_HOST= The hostname you will use to access the app (i.e., netbox.example.com) DB_NAME= Database name (default: netbox) DB_USER= Database user DB_PASSWORD= Database password DB_HOST= Database host (default: postgres) DB_PORT= Database port (defaul: 5432) REDIS_HOST= Redis host (default: redis) REDIS_PORT= Redis port number (default: 6379) REDIS_PASSWORD= Redis password (default: none) REDIS_DB_TASK= Redis database ID for tasks (default: 0) REDIS_DB_CACHE= Redis database ID for caching (default: 1) BASE_PATH= The path you will use to access the app (i.e., /netbox, optional, default: none) REMOTE_AUTH_ENABLED= Enable remote authentication (optional, default: False) REMOTE_AUTH_BACKEND= Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend) REMOTE_AUTH_HEADER= Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER) REMOTE_AUTH_AUTO_CREATE_USER= If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False) REMOTE_AUTH_DEFAULT_GROUPS= The list of groups to assign a new user account when created using remote authentication (optional, default: []) REMOTE_AUTH_DEFAULT_PERMISSIONS= A mapping of permissions to assign a new user account when created using remote authentication (optional, default: {})","title":"Environment Variables (-e)"},{"location":"images/docker-netbox/#volume-mappings-v","text":"Volume Function /config config directory volume mapping","title":"Volume Mappings (-v)"},{"location":"images/docker-netbox/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-netbox/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-netbox/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-netbox/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-netbox/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-netbox/#support-info","text":"Shell access whilst the container is running: docker exec -it netbox /bin/bash To monitor the logs of the container in realtime: docker logs -f netbox Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbox Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbox:latest","title":"Support Info"},{"location":"images/docker-netbox/#versions","text":"02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 01.08.22: - Remove py3-pillow, add tiff to fix deps. 26.07.22: - Add py3-pillow package back on arm to fix build issue. 10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0. 10.12.21: - Rebase to Alpine 3.15. 26.04.21: - Added Redis database environment variables. 03.02.21: - Added remote authentication environment variables. 02.01.21: - Added BASE_PATH environment variable. 23.08.20: - Initial Release.","title":"Versions"},{"location":"images/docker-nextcloud/","text":"linuxserver/nextcloud Nextcloud gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Nextcloud releases Application Setup Access the webui at https://:443 , for more information check out Nextcloud . Docker image update and recreation of container alone won't update nextcloud version. In order to update nextcloud version, you have two options, firstly make sure you are using the latest docker image,then either Perform the in app gui update. Use the CLI version by running docker exec -it nextcloud updater.phar (Both of these are described here ) Note: Both occ and updater.phar can be run without prepending with sudo -u abc php or sudo -u www-data php If you are not customizing our default nginx configuration you will need to remove the file: /config/nginx/site-confs/default.conf Then restart the container to replace it with the latest one. Collaborative Editing Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffice) only work on x86_64 systems with glibc, and therefore they are not compatible with our images. You should create separate containers for them and set them up in Nextcloud with their respective connector addons. If (auto) installed, those built-in packages may cause instability and should be removed. Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nextcloud : image : lscr.io/linuxserver/nextcloud:latest container_name : nextcloud environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata:/config - /path/to/data:/data ports : - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nextcloud \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 443 :443 \\ -v /path/to/appdata:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/nextcloud:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 443 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Nextcloud configs. /data Your personal data. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nextcloud /bin/bash To monitor the logs of the container in realtime: docker logs -f nextcloud Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nextcloud Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nextcloud:latest Versions 10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 30.09.22: - Disabled output_buffering as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html 21.05.22: - Update version check endpoint. 28.04.22: - Increase OPCache interned strings buffered setting to 16. 14.04.22: - Nginx default site config updated for v23 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). Fix LDAP connection. 11.09.21: - Rebasing to alpine 3.14 21.03.21: - Publish php8 tag for testing. 25.02.21: - Nginx default site config updated for v21 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup. 20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article . 12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 03.06.20: - Rebasing to alpine 3.12 03.06.20: - Add php7-bcmath and php7-fileinfo 31.05.20: - Add aliases for occ and updater.phar 31.03.20: - Allow crontab to be user customized, fix logrotate. 17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 19.12.19: - Rebasing to alpine 3.11. 18.11.19: - Nginx default site config updated for v17 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 28.10.19: - Change cronjob to run every 5 minutes. 24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 14.07.19: - Download nextcloud during build time. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 27.02.19: - Updating base nginx config to sync up with v15 requirements. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.01.19: - Add php7-phar for occ upgrades. 05.09.18: - Rebase to alpine 3.8. 11.06.18: - Use latest rather than specific version for initial install. 26.04.18: - Bump default install to 13.0.1. 06.02.18: - Bump default install to 13.0.0. 26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5. 12.12.17: - Bump default install to 12.0.4, fix continuation lines. 15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions. 20.09.17: - Bump default install to 12.0.3. 19.08.17: - Bump default install to 12.0.2. 25.05.17: - Rebase to alpine 3.6. 22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line. 03.05.17: - Use community repo of memcache. 07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.","title":"nextcloud"},{"location":"images/docker-nextcloud/#linuxservernextcloud","text":"Nextcloud gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.","title":"linuxserver/nextcloud"},{"location":"images/docker-nextcloud/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nextcloud/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Nextcloud releases","title":"Version Tags"},{"location":"images/docker-nextcloud/#application-setup","text":"Access the webui at https://:443 , for more information check out Nextcloud . Docker image update and recreation of container alone won't update nextcloud version. In order to update nextcloud version, you have two options, firstly make sure you are using the latest docker image,then either Perform the in app gui update. Use the CLI version by running docker exec -it nextcloud updater.phar (Both of these are described here ) Note: Both occ and updater.phar can be run without prepending with sudo -u abc php or sudo -u www-data php If you are not customizing our default nginx configuration you will need to remove the file: /config/nginx/site-confs/default.conf Then restart the container to replace it with the latest one.","title":"Application Setup"},{"location":"images/docker-nextcloud/#collaborative-editing","text":"Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffice) only work on x86_64 systems with glibc, and therefore they are not compatible with our images. You should create separate containers for them and set them up in Nextcloud with their respective connector addons. If (auto) installed, those built-in packages may cause instability and should be removed.","title":"Collaborative Editing"},{"location":"images/docker-nextcloud/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-nextcloud/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nextcloud/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nextcloud : image : lscr.io/linuxserver/nextcloud:latest container_name : nextcloud environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata:/config - /path/to/data:/data ports : - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nextcloud/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nextcloud \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 443 :443 \\ -v /path/to/appdata:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/nextcloud:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nextcloud/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nextcloud/#ports-p","text":"Parameter Function 443 WebUI","title":"Ports (-p)"},{"location":"images/docker-nextcloud/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-nextcloud/#volume-mappings-v","text":"Volume Function /config Nextcloud configs. /data Your personal data.","title":"Volume Mappings (-v)"},{"location":"images/docker-nextcloud/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nextcloud/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nextcloud/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nextcloud/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nextcloud/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nextcloud/#support-info","text":"Shell access whilst the container is running: docker exec -it nextcloud /bin/bash To monitor the logs of the container in realtime: docker logs -f nextcloud Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nextcloud Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nextcloud:latest","title":"Support Info"},{"location":"images/docker-nextcloud/#versions","text":"10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 30.09.22: - Disabled output_buffering as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html 21.05.22: - Update version check endpoint. 28.04.22: - Increase OPCache interned strings buffered setting to 16. 14.04.22: - Nginx default site config updated for v23 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). Fix LDAP connection. 11.09.21: - Rebasing to alpine 3.14 21.03.21: - Publish php8 tag for testing. 25.02.21: - Nginx default site config updated for v21 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup. 20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article . 12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 03.06.20: - Rebasing to alpine 3.12 03.06.20: - Add php7-bcmath and php7-fileinfo 31.05.20: - Add aliases for occ and updater.phar 31.03.20: - Allow crontab to be user customized, fix logrotate. 17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 19.12.19: - Rebasing to alpine 3.11. 18.11.19: - Nginx default site config updated for v17 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 28.10.19: - Change cronjob to run every 5 minutes. 24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). 14.07.19: - Download nextcloud during build time. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 27.02.19: - Updating base nginx config to sync up with v15 requirements. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.01.19: - Add php7-phar for occ upgrades. 05.09.18: - Rebase to alpine 3.8. 11.06.18: - Use latest rather than specific version for initial install. 26.04.18: - Bump default install to 13.0.1. 06.02.18: - Bump default install to 13.0.0. 26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5. 12.12.17: - Bump default install to 12.0.4, fix continuation lines. 15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions. 20.09.17: - Bump default install to 12.0.3. 19.08.17: - Bump default install to 12.0.2. 25.05.17: - Rebase to alpine 3.6. 22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line. 03.05.17: - Use community repo of memcache. 07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.","title":"Versions"},{"location":"images/docker-nginx/","text":"linuxserver/nginx Nginx is a simple webserver with php support. The config files reside in /config for easy user customization. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Add your web files to /config/www for hosting. Modify the nginx, php and site config files under /config as needed Protip: This container is best combined with a sql server, e.g. mariadb Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nginx : image : lscr.io/linuxserver/nginx:latest container_name : nginx environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nginx \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nginx:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http 443 https Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Contains your www content and all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nginx /bin/bash To monitor the logs of the container in realtime: docker logs -f nginx Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nginx Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nginx:latest Versions 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.05.22: - Install nginx version from 3.14. 01.07.21: - Rebasing to alpine 3.14. 24.06.21: - Update default nginx conf folder. 12.04.21: - Add php7-gmp and php7-pecl-mailparse. 13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod . 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years). 08.09.20: - Add php7-xsl. 01.06.20: - Rebasing to alpine 3.12. 18.04.20: - Fix unwanted shutdown of the container. 11.03.20: - Add php7-sodium. 18.02.20: - Add geoip2, suppress lua warning. 19.12.19: - Rebasing to alpine 3.11. 18.12.19: - Add php7-imap and php7-pecl-apcu. 13.11.19: - Add php7-pdo_odbc. 24.10.19: - Add php7-pecl-imagick. 06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp. 02.08.19: - Add php7-ldap. 28.06.19: - Rebasing to alpine 3.10. 08.05.19: - Remove default.conf when nginx is upgraded in downstream image. 30.04.19: - Add php-redis. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 02.03.19: - Add php intl and posix modules. 28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it). 22.02.19: - Rebasing to alpine 3.9. 18.11.18: - Attempt to upgrade packages during build. 28.09.18: - Multi-arch image. 17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage. 11.05.18: - Add php pgsql support. 19.04.18: - Bind memcached to localhost only, add php7-sqlite3. 05.01.18: - Rebase to alpine 3.7. 08.11.17: - Add php7 soap module. 31.10.17: - Add php7 exif and xmlreader modules. 30.09.17: - Copy additional root files into image. 24.09.17: - Add memcached service. 31.08.17: - Add php7-phar. 14.07.17: - Enable modules dynamically in nginx.conf. 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf. 05.06.17: - Add php7-bz2. 25.05.17: - Rebase to alpine 3.6. 18.04.17: - Add php7-sockets. 27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7. 14.10.16: - Add version layer information. 10.09.16: - Add badges to README. 05.12.15: - Intial Release.","title":"nginx"},{"location":"images/docker-nginx/#linuxservernginx","text":"Nginx is a simple webserver with php support. The config files reside in /config for easy user customization.","title":"linuxserver/nginx"},{"location":"images/docker-nginx/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nginx/#application-setup","text":"Add your web files to /config/www for hosting. Modify the nginx, php and site config files under /config as needed Protip: This container is best combined with a sql server, e.g. mariadb","title":"Application Setup"},{"location":"images/docker-nginx/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nginx/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nginx : image : lscr.io/linuxserver/nginx:latest container_name : nginx environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nginx/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nginx \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nginx:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nginx/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nginx/#ports-p","text":"Parameter Function 80 http 443 https","title":"Ports (-p)"},{"location":"images/docker-nginx/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-nginx/#volume-mappings-v","text":"Volume Function /config Contains your www content and all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-nginx/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nginx/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nginx/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nginx/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nginx/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nginx/#support-info","text":"Shell access whilst the container is running: docker exec -it nginx /bin/bash To monitor the logs of the container in realtime: docker logs -f nginx Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nginx Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nginx:latest","title":"Support Info"},{"location":"images/docker-nginx/#versions","text":"20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 22.05.22: - Install nginx version from 3.14. 01.07.21: - Rebasing to alpine 3.14. 24.06.21: - Update default nginx conf folder. 12.04.21: - Add php7-gmp and php7-pecl-mailparse. 13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod . 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years). 08.09.20: - Add php7-xsl. 01.06.20: - Rebasing to alpine 3.12. 18.04.20: - Fix unwanted shutdown of the container. 11.03.20: - Add php7-sodium. 18.02.20: - Add geoip2, suppress lua warning. 19.12.19: - Rebasing to alpine 3.11. 18.12.19: - Add php7-imap and php7-pecl-apcu. 13.11.19: - Add php7-pdo_odbc. 24.10.19: - Add php7-pecl-imagick. 06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp. 02.08.19: - Add php7-ldap. 28.06.19: - Rebasing to alpine 3.10. 08.05.19: - Remove default.conf when nginx is upgraded in downstream image. 30.04.19: - Add php-redis. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 02.03.19: - Add php intl and posix modules. 28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it). 22.02.19: - Rebasing to alpine 3.9. 18.11.18: - Attempt to upgrade packages during build. 28.09.18: - Multi-arch image. 17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage. 11.05.18: - Add php pgsql support. 19.04.18: - Bind memcached to localhost only, add php7-sqlite3. 05.01.18: - Rebase to alpine 3.7. 08.11.17: - Add php7 soap module. 31.10.17: - Add php7 exif and xmlreader modules. 30.09.17: - Copy additional root files into image. 24.09.17: - Add memcached service. 31.08.17: - Add php7-phar. 14.07.17: - Enable modules dynamically in nginx.conf. 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf. 05.06.17: - Add php7-bz2. 25.05.17: - Rebase to alpine 3.6. 18.04.17: - Add php7-sockets. 27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7. 14.10.16: - Add version layer information. 10.09.16: - Add badges to README. 05.12.15: - Intial Release.","title":"Versions"},{"location":"images/docker-ngircd/","text":"linuxserver/ngircd Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To setup ngircd you will need to edit /config/ngircd.conf which is created the first time the container is run, edit the file and restart the container to implement any config changes. For information see the ngircd site here. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ngircd : image : lscr.io/linuxserver/ngircd:latest container_name : ngircd environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/ngircd/config:/config ports : - 6667:6667 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ngircd \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6667 :6667 \\ -v /path/to/ngircd/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ngircd:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 6667 ngircd port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London Volume Mappings ( -v ) Volume Function /config Where ngircd.conf is stored Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ngircd /bin/bash To monitor the logs of the container in realtime: docker logs -f ngircd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ngircd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ngircd:latest Versions 11.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 04.07.19: - Initial release.","title":"ngircd"},{"location":"images/docker-ngircd/#linuxserverngircd","text":"Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.","title":"linuxserver/ngircd"},{"location":"images/docker-ngircd/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ngircd/#application-setup","text":"To setup ngircd you will need to edit /config/ngircd.conf which is created the first time the container is run, edit the file and restart the container to implement any config changes. For information see the ngircd site here.","title":"Application Setup"},{"location":"images/docker-ngircd/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ngircd/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ngircd : image : lscr.io/linuxserver/ngircd:latest container_name : ngircd environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/ngircd/config:/config ports : - 6667:6667 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ngircd/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ngircd \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6667 :6667 \\ -v /path/to/ngircd/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ngircd:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-ngircd/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ngircd/#ports-p","text":"Parameter Function 6667 ngircd port","title":"Ports (-p)"},{"location":"images/docker-ngircd/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-ngircd/#volume-mappings-v","text":"Volume Function /config Where ngircd.conf is stored","title":"Volume Mappings (-v)"},{"location":"images/docker-ngircd/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ngircd/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ngircd/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ngircd/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-ngircd/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ngircd/#support-info","text":"Shell access whilst the container is running: docker exec -it ngircd /bin/bash To monitor the logs of the container in realtime: docker logs -f ngircd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ngircd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ngircd:latest","title":"Support Info"},{"location":"images/docker-ngircd/#versions","text":"11.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 04.07.19: - Initial release.","title":"Versions"},{"location":"images/docker-nntp2nntp/","text":"linuxserver/nntp2nntp Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast. Warning Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users. New user passwords can be created by running the password hash generator docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass entering the desired password and copying the resulting string to the relevant user line in /config/nntp2nntp.conf Example with a user called Dave and with a password of password Dave = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nntp2nntp : image : lscr.io/linuxserver/nntp2nntp:latest container_name : nntp2nntp environment : - PUID=1000 - PGID=1000 - PUID= - PGID= - TZ=Europe/London volumes : - :/config ports : - 1563:1563 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nntp2nntp \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e PUID = \\ -e PGID = \\ -e TZ = Europe/London \\ -p 1563 :1563 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nntp2nntp:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 1563 will map the container's port 1563 to port 1563 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation PUID= specify your UID PGID= specify your GID TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config this will store config on the docker host Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nntp2nntp /bin/bash To monitor the logs of the container in realtime: docker logs -f nntp2nntp Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nntp2nntp Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nntp2nntp:latest Versions 10.10.22: - Rebase to Alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.04.19: - Multiarch builds and build from Github fork. 15.05.18: - Initial Release.","title":"nntp2nntp"},{"location":"images/docker-nntp2nntp/#linuxservernntp2nntp","text":"Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.","title":"linuxserver/nntp2nntp"},{"location":"images/docker-nntp2nntp/#warning","text":"Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change.","title":"Warning"},{"location":"images/docker-nntp2nntp/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nntp2nntp/#application-setup","text":"Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users. New user passwords can be created by running the password hash generator docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass entering the desired password and copying the resulting string to the relevant user line in /config/nntp2nntp.conf Example with a user called Dave and with a password of password Dave = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8","title":"Application Setup"},{"location":"images/docker-nntp2nntp/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nntp2nntp/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nntp2nntp : image : lscr.io/linuxserver/nntp2nntp:latest container_name : nntp2nntp environment : - PUID=1000 - PGID=1000 - PUID= - PGID= - TZ=Europe/London volumes : - :/config ports : - 1563:1563 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nntp2nntp/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nntp2nntp \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e PUID = \\ -e PGID = \\ -e TZ = Europe/London \\ -p 1563 :1563 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/nntp2nntp:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nntp2nntp/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nntp2nntp/#ports-p","text":"Parameter Function 1563 will map the container's port 1563 to port 1563 on the host","title":"Ports (-p)"},{"location":"images/docker-nntp2nntp/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation PUID= specify your UID PGID= specify your GID TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-nntp2nntp/#volume-mappings-v","text":"Volume Function /config this will store config on the docker host","title":"Volume Mappings (-v)"},{"location":"images/docker-nntp2nntp/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nntp2nntp/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nntp2nntp/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nntp2nntp/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nntp2nntp/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nntp2nntp/#support-info","text":"Shell access whilst the container is running: docker exec -it nntp2nntp /bin/bash To monitor the logs of the container in realtime: docker logs -f nntp2nntp Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nntp2nntp Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nntp2nntp:latest","title":"Support Info"},{"location":"images/docker-nntp2nntp/#versions","text":"10.10.22: - Rebase to Alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.04.19: - Multiarch builds and build from Github fork. 15.05.18: - Initial Release.","title":"Versions"},{"location":"images/docker-nzbget/","text":"linuxserver/nzbget Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable nzbget releases testing \u2705 nzbget pre-releases Application Setup Webui can be found at :6789 and the default login details (change ASAP) are login:nzbget, password:tegbzn6789 To allow scheduling, from the webui set the time correction value in settings/logging. To change umask settings. scroll to bottom, set umask like this (example shown for unraid) You can add an additional mount point for intermediate unpacking folder with:- -v :/intermediate for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate Media folders We have set /downloads as a optional path , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nzbget : image : lscr.io/linuxserver/nzbget:latest container_name : nzbget environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - NZBGET_USER=nzbget #optional - NZBGET_PASS=tegbzn6789 #optional volumes : - /path/to/data:/config - /path/to/downloads:/downloads #optional ports : - 6789:6789 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nzbget \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e NZBGET_USER = nzbget ` #optional` \\ -e NZBGET_PASS = tegbzn6789 ` #optional` \\ -p 6789 :6789 \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/nzbget:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 6789 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. NZBGET_USER=nzbget Specify the user for web authentication. NZBGET_PASS=tegbzn6789 Specify the password for web authentication. Volume Mappings ( -v ) Volume Function /config NZBGet App data. /downloads Location of downloads on disk. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nzbget /bin/bash To monitor the logs of the container in realtime: docker logs -f nzbget Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbget Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbget:latest Versions 27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd 13.11.22: - Rebase master to 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials. 04.07.21: - Rebase to alpine 3.14. 28.05.21: - Add linuxserver wheel index. 23.01.21: - Rebasing to alpine 3.13. 26.10.20: - Fix python dependencies. 24.08.20: - Fix ignored umask environment variable. 08.06.20: - Symlink python3 bin to python. 01.06.20: - Rebasing to alpine 3.12. Removing python2. 13.05.20: - Add rarfile python package (for DeepUnrar). 01.01.20: - Add python3 alongside python2 during transition. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 13.06.19: - Add apprise, chardet & pynzbget packages. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 25.02.19: - Rebasing to alpine 3.9. 20.01.19: - Add pipeline logic and multi arch, build from source. 21.08.18: - Rebase to alpine 3.8. 20.02.18: - Add note about supplemental mount point for intermediate unpacking. 13.12.17: - Rebase to alpine 3.7. 02.09.17: - Place app in subfolder rather than /app. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Rebase to alpine 3.6. 20.04.17: - Add testing branch. 06.02.17: - Rebase to alpine 3.5. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README, perms fix on /app to allow updates. 19.08.16: - Rebase to alpine linux. 18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.","title":"nzbget"},{"location":"images/docker-nzbget/#linuxservernzbget","text":"Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.","title":"linuxserver/nzbget"},{"location":"images/docker-nzbget/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nzbget/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable nzbget releases testing \u2705 nzbget pre-releases","title":"Version Tags"},{"location":"images/docker-nzbget/#application-setup","text":"Webui can be found at :6789 and the default login details (change ASAP) are login:nzbget, password:tegbzn6789 To allow scheduling, from the webui set the time correction value in settings/logging. To change umask settings. scroll to bottom, set umask like this (example shown for unraid) You can add an additional mount point for intermediate unpacking folder with:- -v :/intermediate for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate","title":"Application Setup"},{"location":"images/docker-nzbget/#media-folders","text":"We have set /downloads as a optional path , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-nzbget/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nzbget/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nzbget : image : lscr.io/linuxserver/nzbget:latest container_name : nzbget environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - NZBGET_USER=nzbget #optional - NZBGET_PASS=tegbzn6789 #optional volumes : - /path/to/data:/config - /path/to/downloads:/downloads #optional ports : - 6789:6789 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nzbget/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nzbget \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e NZBGET_USER = nzbget ` #optional` \\ -e NZBGET_PASS = tegbzn6789 ` #optional` \\ -p 6789 :6789 \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/nzbget:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nzbget/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nzbget/#ports-p","text":"Parameter Function 6789 WebUI","title":"Ports (-p)"},{"location":"images/docker-nzbget/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. NZBGET_USER=nzbget Specify the user for web authentication. NZBGET_PASS=tegbzn6789 Specify the password for web authentication.","title":"Environment Variables (-e)"},{"location":"images/docker-nzbget/#volume-mappings-v","text":"Volume Function /config NZBGet App data. /downloads Location of downloads on disk.","title":"Volume Mappings (-v)"},{"location":"images/docker-nzbget/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nzbget/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nzbget/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nzbget/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nzbget/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nzbget/#support-info","text":"Shell access whilst the container is running: docker exec -it nzbget /bin/bash To monitor the logs of the container in realtime: docker logs -f nzbget Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbget Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbget:latest","title":"Support Info"},{"location":"images/docker-nzbget/#versions","text":"27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd 13.11.22: - Rebase master to 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials. 04.07.21: - Rebase to alpine 3.14. 28.05.21: - Add linuxserver wheel index. 23.01.21: - Rebasing to alpine 3.13. 26.10.20: - Fix python dependencies. 24.08.20: - Fix ignored umask environment variable. 08.06.20: - Symlink python3 bin to python. 01.06.20: - Rebasing to alpine 3.12. Removing python2. 13.05.20: - Add rarfile python package (for DeepUnrar). 01.01.20: - Add python3 alongside python2 during transition. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 13.06.19: - Add apprise, chardet & pynzbget packages. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 25.02.19: - Rebasing to alpine 3.9. 20.01.19: - Add pipeline logic and multi arch, build from source. 21.08.18: - Rebase to alpine 3.8. 20.02.18: - Add note about supplemental mount point for intermediate unpacking. 13.12.17: - Rebase to alpine 3.7. 02.09.17: - Place app in subfolder rather than /app. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Rebase to alpine 3.6. 20.04.17: - Add testing branch. 06.02.17: - Rebase to alpine 3.5. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README, perms fix on /app to allow updates. 19.08.16: - Rebase to alpine linux. 18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.","title":"Versions"},{"location":"images/docker-nzbhydra2/","text":"linuxserver/nzbhydra2 Nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/nzbhydra2:v2.10.2-ls49 Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases dev \u2705 Prereleases from their GitHub Application Setup The web interface is at :5076 , to set up indexers and connections to your nzb download applications. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : nzbhydra2 : image : lscr.io/linuxserver/nzbhydra2:latest container_name : nzbhydra2 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /nzb/download:/downloads ports : - 5076:5076 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = nzbhydra2 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 5076 :5076 \\ -v /path/to/data:/config \\ -v /nzb/download:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/nzbhydra2:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5076 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where nzbhydra2 should store config files. /downloads NZB download folder. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it nzbhydra2 /bin/bash To monitor the logs of the container in realtime: docker logs -f nzbhydra2 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbhydra2 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbhydra2:latest Versions 10.12.22: - Bump master JRE to v17. Default mapIpToHost to false. 11.09.22: - Migrate to s6v3. 03.05.22: - Rebase to Jammy. 18.04.22: - Rebase to Alpine 3.15. 01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip. 14.04.20: - Correct Name, Hydra2 -> NZBHydra2. 08.01.20: - Switch to python3. 05.01.20: - Add dev tag for prereleases. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11). 10.08.18: - Rebase to ubuntu bionic. 15.04.18: - Change to port 5076 in the Dockerfile. 11.01.18: - Initial Release.","title":"nzbhydra2"},{"location":"images/docker-nzbhydra2/#linuxservernzbhydra2","text":"Nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra . It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/nzbhydra2:v2.10.2-ls49","title":"linuxserver/nzbhydra2"},{"location":"images/docker-nzbhydra2/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-nzbhydra2/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases dev \u2705 Prereleases from their GitHub","title":"Version Tags"},{"location":"images/docker-nzbhydra2/#application-setup","text":"The web interface is at :5076 , to set up indexers and connections to your nzb download applications.","title":"Application Setup"},{"location":"images/docker-nzbhydra2/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-nzbhydra2/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : nzbhydra2 : image : lscr.io/linuxserver/nzbhydra2:latest container_name : nzbhydra2 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /nzb/download:/downloads ports : - 5076:5076 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-nzbhydra2/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = nzbhydra2 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 5076 :5076 \\ -v /path/to/data:/config \\ -v /nzb/download:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/nzbhydra2:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-nzbhydra2/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-nzbhydra2/#ports-p","text":"Parameter Function 5076 WebUI","title":"Ports (-p)"},{"location":"images/docker-nzbhydra2/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-nzbhydra2/#volume-mappings-v","text":"Volume Function /config Where nzbhydra2 should store config files. /downloads NZB download folder.","title":"Volume Mappings (-v)"},{"location":"images/docker-nzbhydra2/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-nzbhydra2/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-nzbhydra2/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-nzbhydra2/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-nzbhydra2/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-nzbhydra2/#support-info","text":"Shell access whilst the container is running: docker exec -it nzbhydra2 /bin/bash To monitor the logs of the container in realtime: docker logs -f nzbhydra2 Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbhydra2 Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbhydra2:latest","title":"Support Info"},{"location":"images/docker-nzbhydra2/#versions","text":"10.12.22: - Bump master JRE to v17. Default mapIpToHost to false. 11.09.22: - Migrate to s6v3. 03.05.22: - Rebase to Jammy. 18.04.22: - Rebase to Alpine 3.15. 01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip. 14.04.20: - Correct Name, Hydra2 -> NZBHydra2. 08.01.20: - Switch to python3. 05.01.20: - Add dev tag for prereleases. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11). 10.08.18: - Rebase to ubuntu bionic. 15.04.18: - Change to port 5076 in the Dockerfile. 11.01.18: - Initial Release.","title":"Versions"},{"location":"images/docker-ombi/","text":"linuxserver/ombi Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server! Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Ombi releases development \u2705 Releases from the develop branch of Ombi Application Setup Access the webui at :3579 . Follow the setup wizard on initial install. Then configure the required services. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ombi : image : lscr.io/linuxserver/ombi:latest container_name : ombi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BASE_URL=/ombi #optional volumes : - /path/to/appdata/config:/config ports : - 3579:3579 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ombi \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e BASE_URL = /ombi ` #optional` \\ -p 3579 :3579 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ombi:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3579 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL=/ombi Subfolder can optionally be defined as an env variable for reverse proxies. Keep in mind that once this value is defined, the gui setting for base url no longer works. To use the gui setting, remove this env variable. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ombi /bin/bash To monitor the logs of the container in realtime: docker logs -f ombi Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ombi Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ombi:latest Versions 11.09.22: - Migrate to s6v3. 01.05.22: - Rebase to Jammy. 26.04.21: - Update tarball name, allow for v4 builds in stable. 18.01.21: - Update upstream repo. Deprecate v4-preview tag, which is merged to development tag upstream. 14.04.20: - Add Ombi donate links. 10.05.19: - Added an optional env variable for base url setting. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Clarify info on tags and development builds. 25.01.19: - Add info on tags and development builds. 09.01.19: - Switch to multi-arch builds and add aarch64 image. 11.03.18: - Add HOME env to Dockerfile. 05.03.18: - Switch to Ombi v3 stable based on .net core. 26.01.18: - Fix continuation lines. 16.04.17: - Switch to using inhouse mono baseimage. 17.02.17: - Initial Release.","title":"ombi"},{"location":"images/docker-ombi/#linuxserverombi","text":"Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server!","title":"linuxserver/ombi"},{"location":"images/docker-ombi/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ombi/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Ombi releases development \u2705 Releases from the develop branch of Ombi","title":"Version Tags"},{"location":"images/docker-ombi/#application-setup","text":"Access the webui at :3579 . Follow the setup wizard on initial install. Then configure the required services.","title":"Application Setup"},{"location":"images/docker-ombi/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ombi/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ombi : image : lscr.io/linuxserver/ombi:latest container_name : ombi environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - BASE_URL=/ombi #optional volumes : - /path/to/appdata/config:/config ports : - 3579:3579 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ombi/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ombi \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e BASE_URL = /ombi ` #optional` \\ -p 3579 :3579 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/ombi:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-ombi/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ombi/#ports-p","text":"Parameter Function 3579 web gui","title":"Ports (-p)"},{"location":"images/docker-ombi/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL=/ombi Subfolder can optionally be defined as an env variable for reverse proxies. Keep in mind that once this value is defined, the gui setting for base url no longer works. To use the gui setting, remove this env variable.","title":"Environment Variables (-e)"},{"location":"images/docker-ombi/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-ombi/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ombi/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ombi/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ombi/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-ombi/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ombi/#support-info","text":"Shell access whilst the container is running: docker exec -it ombi /bin/bash To monitor the logs of the container in realtime: docker logs -f ombi Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ombi Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ombi:latest","title":"Support Info"},{"location":"images/docker-ombi/#versions","text":"11.09.22: - Migrate to s6v3. 01.05.22: - Rebase to Jammy. 26.04.21: - Update tarball name, allow for v4 builds in stable. 18.01.21: - Update upstream repo. Deprecate v4-preview tag, which is merged to development tag upstream. 14.04.20: - Add Ombi donate links. 10.05.19: - Added an optional env variable for base url setting. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Clarify info on tags and development builds. 25.01.19: - Add info on tags and development builds. 09.01.19: - Switch to multi-arch builds and add aarch64 image. 11.03.18: - Add HOME env to Dockerfile. 05.03.18: - Switch to Ombi v3 stable based on .net core. 26.01.18: - Fix continuation lines. 16.04.17: - Switch to using inhouse mono baseimage. 17.02.17: - Initial Release.","title":"Versions"},{"location":"images/docker-openssh-server/","text":"linuxserver/openssh-server Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup If PUBLIC_KEY or PUBLIC_KEY_FILE , or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys . If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys . PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets. We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints. Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password. The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article . Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder. It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access. TIPS You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname Key Generation This container has a helper script to generate an ssh private/public key. In order to generate a key please run: docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server Then simply follow the prompts. The keys generated by this script are only displayed on your console output, so make sure to save them somewhere after generation. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : openssh-server : image : lscr.io/linuxserver/openssh-server:latest container_name : openssh-server hostname : openssh-server #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PUBLIC_KEY=yourpublickey #optional - PUBLIC_KEY_FILE=/path/to/file #optional - PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys #optional - PUBLIC_KEY_URL=https://github.com/username.keys #optional - SUDO_ACCESS=false #optional - PASSWORD_ACCESS=false #optional - USER_PASSWORD=password #optional - USER_PASSWORD_FILE=/path/to/file #optional - USER_NAME=linuxserver.io #optional volumes : - /path/to/appdata/config:/config ports : - 2222:2222 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = openssh-server \\ --hostname = openssh-server ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PUBLIC_KEY = yourpublickey ` #optional` \\ -e PUBLIC_KEY_FILE = /path/to/file ` #optional` \\ -e PUBLIC_KEY_DIR = /path/to/directory/containing/_only_/pubkeys ` #optional` \\ -e PUBLIC_KEY_URL = https://github.com/username.keys ` #optional` \\ -e SUDO_ACCESS = false ` #optional` \\ -e PASSWORD_ACCESS = false ` #optional` \\ -e USER_PASSWORD = password ` #optional` \\ -e USER_PASSWORD_FILE = /path/to/file ` #optional` \\ -e USER_NAME = linuxserver.io ` #optional` \\ -p 2222 :2222 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openssh-server:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 2222 ssh port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PUBLIC_KEY=yourpublickey Optional ssh public key, which will automatically be added to authorized_keys. PUBLIC_KEY_FILE=/path/to/file Optionally specify a file containing the public key (works with docker secrets). PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys Optionally specify a directory containing the public keys (works with docker secrets). PUBLIC_KEY_URL=https://github.com/username.keys Optionally specify a URL containing the public key. SUDO_ACCESS=false Set to true to allow linuxserver.io , the ssh user, sudo access. Without USER_PASSWORD set, this will allow passwordless sudo access. PASSWORD_ACCESS=false Set to true to allow user/password ssh access. You will want to set USER_PASSWORD or USER_PASSWORD_FILE as well. USER_PASSWORD=password Optionally set a sudo password for linuxserver.io , the ssh user. If this or USER_PASSWORD_FILE are not set but SUDO_ACCESS is set to true, the user will have passwordless sudo access. USER_PASSWORD_FILE=/path/to/file Optionally specify a file that contains the password. This setting supersedes the USER_PASSWORD option (works with docker secrets). USER_NAME=linuxserver.io Optionally specify a user name (Default: linuxserver.io ) Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function --hostname= Optionally the hostname can be defined. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it openssh-server /bin/bash To monitor the logs of the container in realtime: docker logs -f openssh-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openssh-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openssh-server:latest Versions 18.10.22: - Fix wrong behavior of password/passwordless sudo 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 15.09.22: - add netcat-openbsd with support for proxies. 18.07.22: - Fix service perms to comply with upgrade to s6 v3. 16.04.22: - Rebase to alpine 3.15. 16.11.21: - Add PUBLIC_KEY_URL option 28.06.21: - Rebasing to alpine 3.14. Add support for PAM. 10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp. 21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban. 20.10.20: - Set umask for sftp. 01.06.20: - Rebasing to alpine 3.12. 18.01.20: - Add key generation script. 13.01.20: - Add openssh-sftp-server. 19.12.19: - Rebasing to alpine 3.11. 17.10.19: - Initial Release.","title":"openssh-server"},{"location":"images/docker-openssh-server/#linuxserveropenssh-server","text":"Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.","title":"linuxserver/openssh-server"},{"location":"images/docker-openssh-server/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-openssh-server/#application-setup","text":"If PUBLIC_KEY or PUBLIC_KEY_FILE , or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys . If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys . PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets. We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints. Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password. The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article . Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder. It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access.","title":"Application Setup"},{"location":"images/docker-openssh-server/#tips","text":"You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname","title":"TIPS"},{"location":"images/docker-openssh-server/#key-generation","text":"This container has a helper script to generate an ssh private/public key. In order to generate a key please run: docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server Then simply follow the prompts. The keys generated by this script are only displayed on your console output, so make sure to save them somewhere after generation.","title":"Key Generation"},{"location":"images/docker-openssh-server/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-openssh-server/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : openssh-server : image : lscr.io/linuxserver/openssh-server:latest container_name : openssh-server hostname : openssh-server #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PUBLIC_KEY=yourpublickey #optional - PUBLIC_KEY_FILE=/path/to/file #optional - PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys #optional - PUBLIC_KEY_URL=https://github.com/username.keys #optional - SUDO_ACCESS=false #optional - PASSWORD_ACCESS=false #optional - USER_PASSWORD=password #optional - USER_PASSWORD_FILE=/path/to/file #optional - USER_NAME=linuxserver.io #optional volumes : - /path/to/appdata/config:/config ports : - 2222:2222 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-openssh-server/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = openssh-server \\ --hostname = openssh-server ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PUBLIC_KEY = yourpublickey ` #optional` \\ -e PUBLIC_KEY_FILE = /path/to/file ` #optional` \\ -e PUBLIC_KEY_DIR = /path/to/directory/containing/_only_/pubkeys ` #optional` \\ -e PUBLIC_KEY_URL = https://github.com/username.keys ` #optional` \\ -e SUDO_ACCESS = false ` #optional` \\ -e PASSWORD_ACCESS = false ` #optional` \\ -e USER_PASSWORD = password ` #optional` \\ -e USER_PASSWORD_FILE = /path/to/file ` #optional` \\ -e USER_NAME = linuxserver.io ` #optional` \\ -p 2222 :2222 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openssh-server:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-openssh-server/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-openssh-server/#ports-p","text":"Parameter Function 2222 ssh port","title":"Ports (-p)"},{"location":"images/docker-openssh-server/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PUBLIC_KEY=yourpublickey Optional ssh public key, which will automatically be added to authorized_keys. PUBLIC_KEY_FILE=/path/to/file Optionally specify a file containing the public key (works with docker secrets). PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys Optionally specify a directory containing the public keys (works with docker secrets). PUBLIC_KEY_URL=https://github.com/username.keys Optionally specify a URL containing the public key. SUDO_ACCESS=false Set to true to allow linuxserver.io , the ssh user, sudo access. Without USER_PASSWORD set, this will allow passwordless sudo access. PASSWORD_ACCESS=false Set to true to allow user/password ssh access. You will want to set USER_PASSWORD or USER_PASSWORD_FILE as well. USER_PASSWORD=password Optionally set a sudo password for linuxserver.io , the ssh user. If this or USER_PASSWORD_FILE are not set but SUDO_ACCESS is set to true, the user will have passwordless sudo access. USER_PASSWORD_FILE=/path/to/file Optionally specify a file that contains the password. This setting supersedes the USER_PASSWORD option (works with docker secrets). USER_NAME=linuxserver.io Optionally specify a user name (Default: linuxserver.io )","title":"Environment Variables (-e)"},{"location":"images/docker-openssh-server/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-openssh-server/#miscellaneous-options","text":"Parameter Function --hostname= Optionally the hostname can be defined.","title":"Miscellaneous Options"},{"location":"images/docker-openssh-server/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-openssh-server/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-openssh-server/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-openssh-server/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-openssh-server/#support-info","text":"Shell access whilst the container is running: docker exec -it openssh-server /bin/bash To monitor the logs of the container in realtime: docker logs -f openssh-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openssh-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openssh-server:latest","title":"Support Info"},{"location":"images/docker-openssh-server/#versions","text":"18.10.22: - Fix wrong behavior of password/passwordless sudo 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 15.09.22: - add netcat-openbsd with support for proxies. 18.07.22: - Fix service perms to comply with upgrade to s6 v3. 16.04.22: - Rebase to alpine 3.15. 16.11.21: - Add PUBLIC_KEY_URL option 28.06.21: - Rebasing to alpine 3.14. Add support for PAM. 10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp. 21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban. 20.10.20: - Set umask for sftp. 01.06.20: - Rebasing to alpine 3.12. 18.01.20: - Add key generation script. 13.01.20: - Add openssh-sftp-server. 19.12.19: - Rebasing to alpine 3.11. 17.10.19: - Initial Release.","title":"Versions"},{"location":"images/docker-openvpn-as/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard linuxserver/openvpn-as Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 latest Version Tags This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial Application Setup The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password During first login, make sure that the \"Authentication\" in the webui is set to \"Local\" instead of \"PAM\". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation). The \"admin\" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the \"admin\" user in the gui, 4) Modify the as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~ #boot_pam_users.0=admin ~~ boot_pam_users.0=kjhvkhv (this only has to be done once and will survive container recreation) * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above. To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the \"Hostname or IP Address\" section to either your domain name or public ip address. Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : openvpn-as : image : lscr.io/linuxserver/openvpn-as container_name : openvpn-as cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - INTERFACE=eth0 #optional volumes : - :/config ports : - 943:943 - 9443:9443 - 1194:1194/udp restart : unless-stopped docker cli docker run -d \\ --name = openvpn-as \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e INTERFACE = eth0 ` #optional` \\ -p 943 :943 \\ -p 9443 :9443 \\ -p 1194 :1194/udp \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openvpn-as Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 943 Admin GUI port. 9443 TCP port. 1194/udp UDP port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INTERFACE=eth0 With bridge networking, leave it as eth0 (or don't include at all), if host or macvlan, set it to your host's network interface, found by running ifconfig Volume Mappings ( -v ) Volume Function /config Where openvpn-as should store configuration files. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it openvpn-as /bin/bash To monitor the logs of the container in realtime: docker logs -f openvpn-as Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvpn-as Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvpn-as Versions 15.06.20: - Deprecate. 15.06.20: - Add fixes for 2.9.0. 04.11.20: - xenial tag is deprecated and there will be no further releases for that tag. 22.06.20: - Added Support for persistent Customization Folders. 26.03.20: - Switch to using the openvpn-as repo for packages. 29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users. 27.08.19: - Add new clients package to install and upgrade process. 22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed. 25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic. 07.04.19: - Fix first time config. 03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support. 14.03.19: - Update deb package URL. 21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes. 12.02.19: - Rename github repo to match the docker hub repo and container name. 07.02.19: - Add pipeline logic and multi arch. 31.01.19: - Add port mappings to docker create sample in readme. 26.01.19: - Removed privileged and host networking requirements, added cap-add=NET_ADMIN requirement instead. INTERFACE no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default. 19.12.18: - Bump to version 2.6.1. 10.07.18: - Bump to version 2.5.2. 23.03.18: - Bump to version 2.5. 14.12.17: - Consolidate layers and fix continuation lines. 25.10.17: - Bump to version 2.1.12. 18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user. 31.07.17: - Fix updates of existing openvpn-as installs. 07.07.17: - Bump to version 2.1.9. 31.10.16: - Bump to version 2.1.4. 14.10.16: - Add version layer information. 13.09.16: - Rebuild due to push error to hub on last build. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 01.08.16: - Rebase to xenial. 18.09.15: - Initial Release.","title":"openvpn-as"},{"location":"images/docker-openvpn-as/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard","title":"DEPRECATION NOTICE"},{"location":"images/docker-openvpn-as/#linuxserveropenvpn-as","text":"Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control.","title":"linuxserver/openvpn-as"},{"location":"images/docker-openvpn-as/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 latest","title":"Supported Architectures"},{"location":"images/docker-openvpn-as/#version-tags","text":"This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial","title":"Version Tags"},{"location":"images/docker-openvpn-as/#application-setup","text":"The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password During first login, make sure that the \"Authentication\" in the webui is set to \"Local\" instead of \"PAM\". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation). The \"admin\" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the \"admin\" user in the gui, 4) Modify the as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~ #boot_pam_users.0=admin ~~ boot_pam_users.0=kjhvkhv (this only has to be done once and will survive container recreation) * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above. To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the \"Hostname or IP Address\" section to either your domain name or public ip address.","title":"Application Setup"},{"location":"images/docker-openvpn-as/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-openvpn-as/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : openvpn-as : image : lscr.io/linuxserver/openvpn-as container_name : openvpn-as cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - INTERFACE=eth0 #optional volumes : - :/config ports : - 943:943 - 9443:9443 - 1194:1194/udp restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-openvpn-as/#docker-cli","text":"docker run -d \\ --name = openvpn-as \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e INTERFACE = eth0 ` #optional` \\ -p 943 :943 \\ -p 9443 :9443 \\ -p 1194 :1194/udp \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openvpn-as","title":"docker cli"},{"location":"images/docker-openvpn-as/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-openvpn-as/#ports-p","text":"Parameter Function 943 Admin GUI port. 9443 TCP port. 1194/udp UDP port.","title":"Ports (-p)"},{"location":"images/docker-openvpn-as/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INTERFACE=eth0 With bridge networking, leave it as eth0 (or don't include at all), if host or macvlan, set it to your host's network interface, found by running ifconfig","title":"Environment Variables (-e)"},{"location":"images/docker-openvpn-as/#volume-mappings-v","text":"Volume Function /config Where openvpn-as should store configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-openvpn-as/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-openvpn-as/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-openvpn-as/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-openvpn-as/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-openvpn-as/#support-info","text":"Shell access whilst the container is running: docker exec -it openvpn-as /bin/bash To monitor the logs of the container in realtime: docker logs -f openvpn-as Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvpn-as Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvpn-as","title":"Support Info"},{"location":"images/docker-openvpn-as/#versions","text":"15.06.20: - Deprecate. 15.06.20: - Add fixes for 2.9.0. 04.11.20: - xenial tag is deprecated and there will be no further releases for that tag. 22.06.20: - Added Support for persistent Customization Folders. 26.03.20: - Switch to using the openvpn-as repo for packages. 29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users. 27.08.19: - Add new clients package to install and upgrade process. 22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed. 25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic. 07.04.19: - Fix first time config. 03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support. 14.03.19: - Update deb package URL. 21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes. 12.02.19: - Rename github repo to match the docker hub repo and container name. 07.02.19: - Add pipeline logic and multi arch. 31.01.19: - Add port mappings to docker create sample in readme. 26.01.19: - Removed privileged and host networking requirements, added cap-add=NET_ADMIN requirement instead. INTERFACE no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default. 19.12.18: - Bump to version 2.6.1. 10.07.18: - Bump to version 2.5.2. 23.03.18: - Bump to version 2.5. 14.12.17: - Consolidate layers and fix continuation lines. 25.10.17: - Bump to version 2.1.12. 18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user. 31.07.17: - Fix updates of existing openvpn-as installs. 07.07.17: - Bump to version 2.1.9. 31.10.16: - Bump to version 2.1.4. 14.10.16: - Add version layer information. 13.09.16: - Rebuild due to push error to hub on last build. 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 01.08.16: - Rebase to xenial. 18.09.15: - Initial Release.","title":"Versions"},{"location":"images/docker-openvscode-server/","text":"linuxserver/openvscode-server Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases insiders \u2705 Insiders releases Application Setup If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://:3000 . For github integration, drop your ssh key in to /config/.ssh . Then open a terminal from the top menu and set your github username and email via the following commands git config --global user.name \"username\" git config --global user.email \"email address\" When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at https://PORT.openvscode-server.domain.com very much like how code-server's port proxy function is handled. For that, a wildcard CNAME *.openvscode-server.domain.com needs to be created and the SWAG cert needs to cover those subdomains. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : openvscode-server : image : lscr.io/linuxserver/openvscode-server:latest container_name : openvscode-server environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONNECTION_TOKEN= #optional - CONNECTION_SECRET= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional volumes : - /path/to/appdata/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = openvscode-server \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONNECTION_TOKEN = ` #optional` \\ -e CONNECTION_SECRET = ` #optional` \\ -e SUDO_PASSWORD = password ` #optional` \\ -e SUDO_PASSWORD_HASH = ` #optional` \\ -p 3000 :3000 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openvscode-server:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Web UI port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use. CONNECTION_TOKEN= Optional security token for accessing the Web UI (ie. supersecrettoken ). CONNECTION_SECRET= Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. /path/to/file ). Overrides CONNECTION_TOKEN . SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed . Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it openvscode-server /bin/bash To monitor the logs of the container in realtime: docker logs -f openvscode-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvscode-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvscode-server:latest Versions 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents. 12.02.22: - Update install-extension helper to compensate for upstream changes. 04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar. 29.12.21: - Add install-extension as a helper for mods to install extensions. 10.12.21: - Update deprecated connectionToken arg. 30.11.21: - Fix app folder permissions, add the optional sudo password vars. 29.11.21: - Create .profile and .bashrc for the user. 29.11.21: - Release insiders tag. 28.11.21: - Initial Release.","title":"openvscode-server"},{"location":"images/docker-openvscode-server/#linuxserveropenvscode-server","text":"Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.","title":"linuxserver/openvscode-server"},{"location":"images/docker-openvscode-server/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-openvscode-server/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases insiders \u2705 Insiders releases","title":"Version Tags"},{"location":"images/docker-openvscode-server/#application-setup","text":"If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://:3000 . For github integration, drop your ssh key in to /config/.ssh . Then open a terminal from the top menu and set your github username and email via the following commands git config --global user.name \"username\" git config --global user.email \"email address\" When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at https://PORT.openvscode-server.domain.com very much like how code-server's port proxy function is handled. For that, a wildcard CNAME *.openvscode-server.domain.com needs to be created and the SWAG cert needs to cover those subdomains.","title":"Application Setup"},{"location":"images/docker-openvscode-server/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-openvscode-server/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : openvscode-server : image : lscr.io/linuxserver/openvscode-server:latest container_name : openvscode-server environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - CONNECTION_TOKEN= #optional - CONNECTION_SECRET= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional volumes : - /path/to/appdata/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-openvscode-server/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = openvscode-server \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e CONNECTION_TOKEN = ` #optional` \\ -e CONNECTION_SECRET = ` #optional` \\ -e SUDO_PASSWORD = password ` #optional` \\ -e SUDO_PASSWORD_HASH = ` #optional` \\ -p 3000 :3000 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/openvscode-server:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-openvscode-server/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-openvscode-server/#ports-p","text":"Parameter Function 3000 Web UI port.","title":"Ports (-p)"},{"location":"images/docker-openvscode-server/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use. CONNECTION_TOKEN= Optional security token for accessing the Web UI (ie. supersecrettoken ). CONNECTION_SECRET= Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. /path/to/file ). Overrides CONNECTION_TOKEN . SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed .","title":"Environment Variables (-e)"},{"location":"images/docker-openvscode-server/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-openvscode-server/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-openvscode-server/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-openvscode-server/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-openvscode-server/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-openvscode-server/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-openvscode-server/#support-info","text":"Shell access whilst the container is running: docker exec -it openvscode-server /bin/bash To monitor the logs of the container in realtime: docker logs -f openvscode-server Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvscode-server Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvscode-server:latest","title":"Support Info"},{"location":"images/docker-openvscode-server/#versions","text":"29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents. 12.02.22: - Update install-extension helper to compensate for upstream changes. 04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar. 29.12.21: - Add install-extension as a helper for mods to install extensions. 10.12.21: - Update deprecated connectionToken arg. 30.11.21: - Fix app folder permissions, add the optional sudo password vars. 29.11.21: - Create .profile and .bashrc for the user. 29.11.21: - Release insiders tag. 28.11.21: - Initial Release.","title":"Versions"},{"location":"images/docker-organizr/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr linuxserver/organizr Organizr is a HTPC/Homelab Services Organizer - Written in PHP Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup \"Tabs\" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs. For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : organizr : image : linuxserver/organizr container_name : organizr environment : - PUID=1000 - PGID=1000 - TZ= volumes : - :/config ports : - 9983:80 restart : unless-stopped docker cli docker run -d \\ --name=organizr \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ= \\ -p 9983:80 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/organizr Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 will map the container's port 80 to port 9983 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= for specifying your timezone Volume Mappings ( -v ) Volume Function /config this is where your user data and logs will live Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Dead simple to get running, create the container as instructed and start it. When up and running, load the site. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it organizr /bin/bash To monitor the logs of the container in realtime: docker logs -f organizr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' organizr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/organizr Versions 18.04.19: - Fix new install not working. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 26.02.19: - Upgrade packages during install to prevent mismatch with baseimage. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Fix permissions on new app location 31.12.18: - Moved to pipeline building from v1-master branch 05.09.18: - Rebase to Alpine 3.8 10.01.18: - Rebase to Alpine 3.7 25.05.17: - Rebase to Alpine 3.6 02.05.17: - Added php7-curl package 12.04.17: - Added php7-ldap package 10.03.18: - Initial Release.","title":"organizr"},{"location":"images/docker-organizr/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr","title":"DEPRECATION NOTICE"},{"location":"images/docker-organizr/#linuxserverorganizr","text":"Organizr is a HTPC/Homelab Services Organizer - Written in PHP Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup \"Tabs\" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs. For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr","title":"linuxserver/organizr"},{"location":"images/docker-organizr/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-organizr/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-organizr/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : organizr : image : linuxserver/organizr container_name : organizr environment : - PUID=1000 - PGID=1000 - TZ= volumes : - :/config ports : - 9983:80 restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-organizr/#docker-cli","text":"docker run -d \\ --name=organizr \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ= \\ -p 9983:80 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/organizr","title":"docker cli"},{"location":"images/docker-organizr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-organizr/#ports-p","text":"Parameter Function 80 will map the container's port 80 to port 9983 on the host","title":"Ports (-p)"},{"location":"images/docker-organizr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ= for specifying your timezone","title":"Environment Variables (-e)"},{"location":"images/docker-organizr/#volume-mappings-v","text":"Volume Function /config this is where your user data and logs will live","title":"Volume Mappings (-v)"},{"location":"images/docker-organizr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-organizr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-organizr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-organizr/#application-setup","text":"Dead simple to get running, create the container as instructed and start it. When up and running, load the site.","title":"Application Setup"},{"location":"images/docker-organizr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-organizr/#support-info","text":"Shell access whilst the container is running: docker exec -it organizr /bin/bash To monitor the logs of the container in realtime: docker logs -f organizr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' organizr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/organizr","title":"Support Info"},{"location":"images/docker-organizr/#versions","text":"18.04.19: - Fix new install not working. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 26.02.19: - Upgrade packages during install to prevent mismatch with baseimage. 22.02.19: - Rebasing to alpine 3.9. 11.02.19: - Fix permissions on new app location 31.12.18: - Moved to pipeline building from v1-master branch 05.09.18: - Rebase to Alpine 3.8 10.01.18: - Rebase to Alpine 3.7 25.05.17: - Rebase to Alpine 3.6 02.05.17: - Added php7-curl package 12.04.17: - Added php7-ldap package 10.03.18: - Initial Release.","title":"Versions"},{"location":"images/docker-oscam/","text":"linuxserver/oscam Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : oscam : image : lscr.io/linuxserver/oscam:latest container_name : oscam environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 8888:8888 devices : - /dev/ttyUSB0:/dev/ttyUSB0 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = oscam \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8888 :8888 \\ -v /path/to/data:/config \\ --device /dev/ttyUSB0:/dev/ttyUSB0 \\ --restart unless-stopped \\ lscr.io/linuxserver/oscam:latest Passing through Smart Card Readers If you want to pass through a smart card reader, you need to specify the reader with the --device= tag. The method used depends on how the reader is recognized. The first is /dev/ttyUSBX. To find the correct device, connect the reader and run dmesg | tail on the host. In the output you will find /dev/ttyUSBX, where X is the number of the device. If this is the first reader you connect to your host, it will be /dev/ttyUSB0. If you add one more it will be /dev/ttyUSB1. If there are no /dev/ttyUSBX device in dmesg | tail , you have to use the USB bus path. It will look similar to the below. /dev/bus/usb/001/001 The important parts are the two numbers in the end. The first one is the Bus number, the second is the Device number. To find the Bus and Device number you have to run lsusb on the host, then find your USB device in the list and note the Bus and Device numbers. Here is an example of how to find the Bus and Device. The output of the lsusb command is below. Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121 The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the --device= tag. --device=/dev/bus/usb/002/005 If you have multiple smart card readers, you add one --device= tag for each reader. Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8888 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where oscam should store config files and logs. Device Mappings ( --device ) Parameter Function /dev/ttyUSB0 For passing through smart card readers. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it oscam /bin/bash To monitor the logs of the container in realtime: docker logs -f oscam Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' oscam Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/oscam:latest Versions 03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link. 13.02.22: - Rebasing to alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 29.04.19: - Add revision check, so pipeline can build new revisions. 28.04.19: - Switch back to streamboard svn to fix version not showing in UI. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8. 03.01.18: - Deprecate cpu_core routine lack of scaling. 13.12.17: - Rebase to alpine 3.7. 19.10.17: - Add ccid package for usb card readers. 17.10.17: - Switch to using bzr for source code, streamboard awol. 28.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 02.10.16: - Add info on passing through devices to README. 25.09.16: - Initial release.","title":"oscam"},{"location":"images/docker-oscam/#linuxserveroscam","text":"Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.","title":"linuxserver/oscam"},{"location":"images/docker-oscam/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-oscam/#application-setup","text":"To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888.","title":"Application Setup"},{"location":"images/docker-oscam/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-oscam/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : oscam : image : lscr.io/linuxserver/oscam:latest container_name : oscam environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 8888:8888 devices : - /dev/ttyUSB0:/dev/ttyUSB0 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-oscam/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = oscam \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8888 :8888 \\ -v /path/to/data:/config \\ --device /dev/ttyUSB0:/dev/ttyUSB0 \\ --restart unless-stopped \\ lscr.io/linuxserver/oscam:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-oscam/#passing-through-smart-card-readers","text":"If you want to pass through a smart card reader, you need to specify the reader with the --device= tag. The method used depends on how the reader is recognized. The first is /dev/ttyUSBX. To find the correct device, connect the reader and run dmesg | tail on the host. In the output you will find /dev/ttyUSBX, where X is the number of the device. If this is the first reader you connect to your host, it will be /dev/ttyUSB0. If you add one more it will be /dev/ttyUSB1. If there are no /dev/ttyUSBX device in dmesg | tail , you have to use the USB bus path. It will look similar to the below. /dev/bus/usb/001/001 The important parts are the two numbers in the end. The first one is the Bus number, the second is the Device number. To find the Bus and Device number you have to run lsusb on the host, then find your USB device in the list and note the Bus and Device numbers. Here is an example of how to find the Bus and Device. The output of the lsusb command is below. Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121 The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the --device= tag. --device=/dev/bus/usb/002/005 If you have multiple smart card readers, you add one --device= tag for each reader.","title":"Passing through Smart Card Readers"},{"location":"images/docker-oscam/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-oscam/#ports-p","text":"Parameter Function 8888 WebUI","title":"Ports (-p)"},{"location":"images/docker-oscam/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-oscam/#volume-mappings-v","text":"Volume Function /config Where oscam should store config files and logs.","title":"Volume Mappings (-v)"},{"location":"images/docker-oscam/#device-mappings-device","text":"Parameter Function /dev/ttyUSB0 For passing through smart card readers.","title":"Device Mappings (--device)"},{"location":"images/docker-oscam/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-oscam/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-oscam/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-oscam/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-oscam/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-oscam/#support-info","text":"Shell access whilst the container is running: docker exec -it oscam /bin/bash To monitor the logs of the container in realtime: docker logs -f oscam Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' oscam Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/oscam:latest","title":"Support Info"},{"location":"images/docker-oscam/#versions","text":"03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link. 13.02.22: - Rebasing to alpine 3.15. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 29.04.19: - Add revision check, so pipeline can build new revisions. 28.04.19: - Switch back to streamboard svn to fix version not showing in UI. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8. 03.01.18: - Deprecate cpu_core routine lack of scaling. 13.12.17: - Rebase to alpine 3.7. 19.10.17: - Add ccid package for usb card readers. 17.10.17: - Switch to using bzr for source code, streamboard awol. 28.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 02.10.16: - Add info on passing through devices to README. 25.09.16: - Initial release.","title":"Versions"},{"location":"images/docker-overseerr/","text":"linuxserver/overseerr Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from GitHub develop \u2705 Development releases from commits in upstream develop branch Application Setup Access the webui at :5055 , for more information check out Overseerr . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : overseerr : image : lscr.io/linuxserver/overseerr:latest container_name : overseerr environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config ports : - 5055:5055 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = overseerr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 5055 :5055 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/overseerr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5055 Port for Overseerr's web interface. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it overseerr /bin/bash To monitor the logs of the container in realtime: docker logs -f overseerr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' overseerr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/overseerr:latest Versions 18.12.22: - Rebase main to 3.17. 27.10.22: - Rebase main to 3.16, migrate to s6v3. 20.08.22: - Don't install cypress. 01.04.22: - Rebase main branch to Alpine 3.15. 27.01.22: - Rebase develop branch to Alpine 3.15. 04.01.22: - Remove cached files. 10.10.21: - Add additional post-build cleanup. 19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit. 05.04.21: - Initial Release.","title":"overseerr"},{"location":"images/docker-overseerr/#linuxserveroverseerr","text":"Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.","title":"linuxserver/overseerr"},{"location":"images/docker-overseerr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-overseerr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from GitHub develop \u2705 Development releases from commits in upstream develop branch","title":"Version Tags"},{"location":"images/docker-overseerr/#application-setup","text":"Access the webui at :5055 , for more information check out Overseerr .","title":"Application Setup"},{"location":"images/docker-overseerr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-overseerr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : overseerr : image : lscr.io/linuxserver/overseerr:latest container_name : overseerr environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata/config:/config ports : - 5055:5055 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-overseerr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = overseerr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -p 5055 :5055 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/overseerr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-overseerr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-overseerr/#ports-p","text":"Parameter Function 5055 Port for Overseerr's web interface.","title":"Ports (-p)"},{"location":"images/docker-overseerr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York","title":"Environment Variables (-e)"},{"location":"images/docker-overseerr/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-overseerr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-overseerr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-overseerr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-overseerr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-overseerr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-overseerr/#support-info","text":"Shell access whilst the container is running: docker exec -it overseerr /bin/bash To monitor the logs of the container in realtime: docker logs -f overseerr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' overseerr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/overseerr:latest","title":"Support Info"},{"location":"images/docker-overseerr/#versions","text":"18.12.22: - Rebase main to 3.17. 27.10.22: - Rebase main to 3.16, migrate to s6v3. 20.08.22: - Don't install cypress. 01.04.22: - Rebase main branch to Alpine 3.15. 27.01.22: - Rebase develop branch to Alpine 3.15. 04.01.22: - Remove cached files. 10.10.21: - Add additional post-build cleanup. 19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit. 05.04.21: - Initial Release.","title":"Versions"},{"location":"images/docker-paperless-ng/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx linuxserver/paperless-ng Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng . For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it manage . For example, docker exec -it paperless manage document_retagger -tT . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : paperless-ng : image : lscr.io/linuxserver/paperless-ng:latest container_name : paperless-ng environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - :/config - :/data ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = paperless-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/paperless-ng:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ng data files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it paperless-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f paperless-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ng:latest Versions 05.09.22: - Deprecate. 30.11.21: - Added in jbig2enc. 07.10.21: - Fixed variable that determins if we should run redis locally. 01.10.21: - Replaced uwsgi with gunicorn due to websocket issues. 24.07.21: - Fixed directory config files (sqlite db) is all stored. 23.07.21: - Fixed initial user creation. 10.07.21: - Initial Release.","title":"paperless-ng"},{"location":"images/docker-paperless-ng/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx","title":"DEPRECATION NOTICE"},{"location":"images/docker-paperless-ng/#linuxserverpaperless-ng","text":"Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"","title":"linuxserver/paperless-ng"},{"location":"images/docker-paperless-ng/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-paperless-ng/#application-setup","text":"Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng . For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it manage . For example, docker exec -it paperless manage document_retagger -tT .","title":"Application Setup"},{"location":"images/docker-paperless-ng/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-paperless-ng/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : paperless-ng : image : lscr.io/linuxserver/paperless-ng:latest container_name : paperless-ng environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - :/config - :/data ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-paperless-ng/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = paperless-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/paperless-ng:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-paperless-ng/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-paperless-ng/#ports-p","text":"Parameter Function 8000 http gui","title":"Ports (-p)"},{"location":"images/docker-paperless-ng/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py","title":"Environment Variables (-e)"},{"location":"images/docker-paperless-ng/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ng data files.","title":"Volume Mappings (-v)"},{"location":"images/docker-paperless-ng/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-paperless-ng/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-paperless-ng/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-paperless-ng/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-paperless-ng/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-paperless-ng/#support-info","text":"Shell access whilst the container is running: docker exec -it paperless-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f paperless-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ng:latest","title":"Support Info"},{"location":"images/docker-paperless-ng/#versions","text":"05.09.22: - Deprecate. 30.11.21: - Added in jbig2enc. 07.10.21: - Fixed variable that determins if we should run redis locally. 01.10.21: - Replaced uwsgi with gunicorn due to websocket issues. 24.07.21: - Fixed directory config files (sqlite db) is all stored. 23.07.21: - Fixed initial user creation. 10.07.21: - Initial Release.","title":"Versions"},{"location":"images/docker-paperless-ngx/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx linuxserver/paperless-ngx Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx . For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it manage . For example, docker exec -it paperless manage document_retagger -tT . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : paperless-ngx : image : lscr.io/linuxserver/paperless-ngx:latest container_name : paperless-ngx environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - /path/to/appdata/config:/config - /path/to/appdata/data:/data ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = paperless-ngx \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v /path/to/appdata/config:/config \\ -v /path/to/appdata/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/paperless-ngx:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ngx data files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it paperless-ngx /bin/bash To monitor the logs of the container in realtime: docker logs -f paperless-ngx Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ngx Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ngx:latest Versions 05.09.22: - Deprecate. 16.05.22: - Add correct libqpdf.so to arm builds. 14.05.22: - Fine tune disabling of redis. 12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql. 12.05.22: - Utilize lsio wheel for pikepdf. 11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn. 05.05.22: - Add runtime dependencies libxslt1.1 for armhf 30.04.22: - Add runtime dependencies lizbar and poppler-utils 27.04.22: - Add build-dependencies for arm32 builds. 11.04.22: - Replaced uwsgi with gunicorn due to websocket issues. 11.03.22: - Initial Release.","title":"paperless-ngx"},{"location":"images/docker-paperless-ngx/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx","title":"DEPRECATION NOTICE"},{"location":"images/docker-paperless-ngx/#linuxserverpaperless-ngx","text":"Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"","title":"linuxserver/paperless-ngx"},{"location":"images/docker-paperless-ngx/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-paperless-ngx/#application-setup","text":"Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx . For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it manage . For example, docker exec -it paperless manage document_retagger -tT .","title":"Application Setup"},{"location":"images/docker-paperless-ngx/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-paperless-ngx/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : paperless-ngx : image : lscr.io/linuxserver/paperless-ngx:latest container_name : paperless-ngx environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - /path/to/appdata/config:/config - /path/to/appdata/data:/data ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-paperless-ngx/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = paperless-ngx \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v /path/to/appdata/config:/config \\ -v /path/to/appdata/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/paperless-ngx:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-paperless-ngx/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-paperless-ngx/#ports-p","text":"Parameter Function 8000 http gui","title":"Ports (-p)"},{"location":"images/docker-paperless-ngx/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py","title":"Environment Variables (-e)"},{"location":"images/docker-paperless-ngx/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ngx data files.","title":"Volume Mappings (-v)"},{"location":"images/docker-paperless-ngx/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-paperless-ngx/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-paperless-ngx/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-paperless-ngx/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-paperless-ngx/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-paperless-ngx/#support-info","text":"Shell access whilst the container is running: docker exec -it paperless-ngx /bin/bash To monitor the logs of the container in realtime: docker logs -f paperless-ngx Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ngx Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ngx:latest","title":"Support Info"},{"location":"images/docker-paperless-ngx/#versions","text":"05.09.22: - Deprecate. 16.05.22: - Add correct libqpdf.so to arm builds. 14.05.22: - Fine tune disabling of redis. 12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql. 12.05.22: - Utilize lsio wheel for pikepdf. 11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn. 05.05.22: - Add runtime dependencies libxslt1.1 for armhf 30.04.22: - Add runtime dependencies lizbar and poppler-utils 27.04.22: - Add build-dependencies for arm32 builds. 11.04.22: - Replaced uwsgi with gunicorn due to websocket issues. 11.03.22: - Initial Release.","title":"Versions"},{"location":"images/docker-papermerge/","text":"linuxserver/papermerge Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\" Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge . If you need non-English OCR language support, you can use this mod . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : papermerge : image : lscr.io/linuxserver/papermerge:latest container_name : papermerge environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - :/config - :/data ports : - 8000:8000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = papermerge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/papermerge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 http gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /data Storage location for all papermerge data files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it papermerge /bin/bash To monitor the logs of the container in realtime: docker logs -f papermerge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' papermerge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/papermerge:latest Versions 15.07.22: - Don't install development python packages 13.04.21: - Handle upstream stapler change 13.03.21: - Fixed mglib dependency per issue 32 25.02.21: - Updated dependencies for v2 07.02.21: - Support external MySQL/PSQL DBs. 01.02.21: - Add redis. 09.12.20: - Fix locales. 08.08.20: - Initial Release.","title":"papermerge"},{"location":"images/docker-papermerge/#linuxserverpapermerge","text":"Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\"","title":"linuxserver/papermerge"},{"location":"images/docker-papermerge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-papermerge/#application-setup","text":"Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge . If you need non-English OCR language support, you can use this mod .","title":"Application Setup"},{"location":"images/docker-papermerge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-papermerge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : papermerge : image : lscr.io/linuxserver/papermerge:latest container_name : papermerge environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - REDIS_URL= #optional volumes : - :/config - :/data ports : - 8000:8000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-papermerge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = papermerge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e REDIS_URL = ` #optional` \\ -p 8000 :8000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/papermerge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-papermerge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-papermerge/#ports-p","text":"Parameter Function 8000 http gui","title":"Ports (-p)"},{"location":"images/docker-papermerge/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port ( redis:6379 ) and/or db ( redis/foo ). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py","title":"Environment Variables (-e)"},{"location":"images/docker-papermerge/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all papermerge data files.","title":"Volume Mappings (-v)"},{"location":"images/docker-papermerge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-papermerge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-papermerge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-papermerge/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-papermerge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-papermerge/#support-info","text":"Shell access whilst the container is running: docker exec -it papermerge /bin/bash To monitor the logs of the container in realtime: docker logs -f papermerge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' papermerge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/papermerge:latest","title":"Support Info"},{"location":"images/docker-papermerge/#versions","text":"15.07.22: - Don't install development python packages 13.04.21: - Handle upstream stapler change 13.03.21: - Fixed mglib dependency per issue 32 25.02.21: - Updated dependencies for v2 07.02.21: - Support external MySQL/PSQL DBs. 01.02.21: - Add redis. 09.12.20: - Fix locales. 08.08.20: - Initial Release.","title":"Versions"},{"location":"images/docker-photoshow/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/photoshow Photoshow is gallery software at its easiest, it doesn't even require a database. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : photoshow : image : lscr.io/linuxserver/photoshow:latest container_name : photoshow environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/Pictures:ro - :/Thumbs ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = photoshow \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ -v :/Pictures:ro \\ -v :/Thumbs \\ --restart unless-stopped \\ lscr.io/linuxserver/photoshow:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Stores config and logs for nginx base. /Pictures:ro Your local folder of photos you wish to share. /Thumbs Local folder to store thumbnails of your images. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it photoshow /bin/bash To monitor the logs of the container in realtime: docker logs -f photoshow Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' photoshow Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/photoshow:latest Versions 14.10.22: - Deprecate image. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 23.09.19: - Adding PHP-Exif for image metadata and processing. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 05.09.18: - Rebase to alpine 3.8. 07.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 14.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Rebase to alpine linux. 11.09.16: - Add layer badges to README. 21.08.15: - Use patched keybaord js from fork of photoshow. 21.08.15: - Initial Release.","title":"photoshow"},{"location":"images/docker-photoshow/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-photoshow/#linuxserverphotoshow","text":"Photoshow is gallery software at its easiest, it doesn't even require a database.","title":"linuxserver/photoshow"},{"location":"images/docker-photoshow/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-photoshow/#application-setup","text":"On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping.","title":"Application Setup"},{"location":"images/docker-photoshow/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-photoshow/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : photoshow : image : lscr.io/linuxserver/photoshow:latest container_name : photoshow environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/Pictures:ro - :/Thumbs ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-photoshow/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = photoshow \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v :/config \\ -v :/Pictures:ro \\ -v :/Thumbs \\ --restart unless-stopped \\ lscr.io/linuxserver/photoshow:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-photoshow/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-photoshow/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-photoshow/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-photoshow/#volume-mappings-v","text":"Volume Function /config Stores config and logs for nginx base. /Pictures:ro Your local folder of photos you wish to share. /Thumbs Local folder to store thumbnails of your images.","title":"Volume Mappings (-v)"},{"location":"images/docker-photoshow/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-photoshow/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-photoshow/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-photoshow/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-photoshow/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-photoshow/#support-info","text":"Shell access whilst the container is running: docker exec -it photoshow /bin/bash To monitor the logs of the container in realtime: docker logs -f photoshow Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' photoshow Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/photoshow:latest","title":"Support Info"},{"location":"images/docker-photoshow/#versions","text":"14.10.22: - Deprecate image. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 23.09.19: - Adding PHP-Exif for image metadata and processing. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 05.09.18: - Rebase to alpine 3.8. 07.01.18: - Rebase to alpine 3.7. 25.05.17: - Rebase to alpine 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 14.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Rebase to alpine linux. 11.09.16: - Add layer badges to README. 21.08.15: - Use patched keybaord js from fork of photoshow. 21.08.15: - Initial Release.","title":"Versions"},{"location":"images/docker-phpmyadmin/","text":"linuxserver/phpmyadmin Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants. We support all of the official environment variables for configuration as well as directly editing the config files. For more information check out the phpmyadmin documentation . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : phpmyadmin : image : lscr.io/linuxserver/phpmyadmin:latest container_name : phpmyadmin environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - PMA_ARBITRARY=1 #optional - PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = phpmyadmin \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e PMA_ARBITRARY = 1 ` #optional` \\ -e PMA_ABSOLUTE_URI = https://phpmyadmin.example.com ` #optional` \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/phpmyadmin:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Port for web frontend Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York PMA_ARBITRARY=1 Set to 1 to allow you to connect to any server. Setting to 0 will only allow you to connect to specified hosts (See Application Setup) PMA_ABSOLUTE_URI=https://phpmyadmin.example.com Set the URL you will use to access the web frontend Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it phpmyadmin /bin/bash To monitor the logs of the container in realtime: docker logs -f phpmyadmin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' phpmyadmin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/phpmyadmin:latest Versions 18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3. 20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 23.01.22: - Pin versions to 5.x.x. 14.06.21: - Initial Release.","title":"phpmyadmin"},{"location":"images/docker-phpmyadmin/#linuxserverphpmyadmin","text":"Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.","title":"linuxserver/phpmyadmin"},{"location":"images/docker-phpmyadmin/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-phpmyadmin/#application-setup","text":"This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants. We support all of the official environment variables for configuration as well as directly editing the config files. For more information check out the phpmyadmin documentation .","title":"Application Setup"},{"location":"images/docker-phpmyadmin/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-phpmyadmin/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : phpmyadmin : image : lscr.io/linuxserver/phpmyadmin:latest container_name : phpmyadmin environment : - PUID=1000 - PGID=1000 - TZ=America/New_York - PMA_ARBITRARY=1 #optional - PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional volumes : - /path/to/appdata/config:/config ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-phpmyadmin/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = phpmyadmin \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -e PMA_ARBITRARY = 1 ` #optional` \\ -e PMA_ABSOLUTE_URI = https://phpmyadmin.example.com ` #optional` \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/phpmyadmin:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-phpmyadmin/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-phpmyadmin/#ports-p","text":"Parameter Function 80 Port for web frontend","title":"Ports (-p)"},{"location":"images/docker-phpmyadmin/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York PMA_ARBITRARY=1 Set to 1 to allow you to connect to any server. Setting to 0 will only allow you to connect to specified hosts (See Application Setup) PMA_ABSOLUTE_URI=https://phpmyadmin.example.com Set the URL you will use to access the web frontend","title":"Environment Variables (-e)"},{"location":"images/docker-phpmyadmin/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-phpmyadmin/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-phpmyadmin/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-phpmyadmin/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-phpmyadmin/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-phpmyadmin/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-phpmyadmin/#support-info","text":"Shell access whilst the container is running: docker exec -it phpmyadmin /bin/bash To monitor the logs of the container in realtime: docker logs -f phpmyadmin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' phpmyadmin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/phpmyadmin:latest","title":"Support Info"},{"location":"images/docker-phpmyadmin/#versions","text":"18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3. 20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 23.01.22: - Pin versions to 5.x.x. 14.06.21: - Initial Release.","title":"Versions"},{"location":"images/docker-pidgin/","text":"linuxserver/pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds . Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it. Bonjour- Default XMPP style plugin Discord- Provided by purple-discord Facebook- Provided by purple-facebook Gadu-Gadu- Default libgadu plugin Google Talk- Provided by purple-hangouts GroupWise- Default GroupWise plugin Hangouts- Provided by purple-hangouts ICQ (WIM)- Provided by icyque IRC- Default IRC plugin Instagram- Provided by purple-instagram Office Comminicator (SIPE)- Provided by SIPE Project Rocket.chat- Provided by purple-rocketchat SIMPLE- Default plugin Skype (HTTP)- Provided by skype4pidgin Slack- Provided by slack-libpurple Telegram- Provided by telegram-purple XMPP- Default XMPP plugin Zephyr- Default project Athena plugin Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pidgin : image : lscr.io/linuxserver/pidgin:latest container_name : pidgin security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pidgin \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pidgin:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Pidgin desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores local files and settings Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pidgin /bin/bash To monitor the logs of the container in realtime: docker logs -f pidgin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pidgin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pidgin:latest Versions 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 15.02.22: - Add build deps for discord. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 14.05.21: - Initial release.","title":"pidgin"},{"location":"images/docker-pidgin/#linuxserverpidgin","text":"Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.","title":"linuxserver/pidgin"},{"location":"images/docker-pidgin/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pidgin/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds . Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it. Bonjour- Default XMPP style plugin Discord- Provided by purple-discord Facebook- Provided by purple-facebook Gadu-Gadu- Default libgadu plugin Google Talk- Provided by purple-hangouts GroupWise- Default GroupWise plugin Hangouts- Provided by purple-hangouts ICQ (WIM)- Provided by icyque IRC- Default IRC plugin Instagram- Provided by purple-instagram Office Comminicator (SIPE)- Provided by SIPE Project Rocket.chat- Provided by purple-rocketchat SIMPLE- Default plugin Skype (HTTP)- Provided by skype4pidgin Slack- Provided by slack-libpurple Telegram- Provided by telegram-purple XMPP- Default XMPP plugin Zephyr- Default project Athena plugin","title":"Application Setup"},{"location":"images/docker-pidgin/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pidgin/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pidgin : image : lscr.io/linuxserver/pidgin:latest container_name : pidgin security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pidgin/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pidgin \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pidgin:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pidgin/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pidgin/#ports-p","text":"Parameter Function 3000 Pidgin desktop gui.","title":"Ports (-p)"},{"location":"images/docker-pidgin/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-pidgin/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores local files and settings","title":"Volume Mappings (-v)"},{"location":"images/docker-pidgin/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-pidgin/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pidgin/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pidgin/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pidgin/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pidgin/#support-info","text":"Shell access whilst the container is running: docker exec -it pidgin /bin/bash To monitor the logs of the container in realtime: docker logs -f pidgin Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pidgin Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pidgin:latest","title":"Support Info"},{"location":"images/docker-pidgin/#versions","text":"21.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 15.02.22: - Add build deps for discord. 23.12.21: - Rebase to Alpine 3.15. 26.09.21: - Rebase to Alpine 3.14. 14.05.21: - Initial release.","title":"Versions"},{"location":"images/docker-piwigo/","text":"linuxserver/piwigo Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup You must create a user and database for piwigo to use in a mysql/mariadb server. Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own. The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc.\" Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : piwigo : image : lscr.io/linuxserver/piwigo:latest container_name : piwigo environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/appdata/gallery:/gallery ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = piwigo \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ -v /path/to/appdata/gallery:/gallery \\ --restart unless-stopped \\ lscr.io/linuxserver/piwigo:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. /gallery Image storage for Piwigo Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it piwigo /bin/bash To monitor the logs of the container in realtime: docker logs -f piwigo Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piwigo Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piwigo:latest Versions 08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 29.06.21: - Rebase to 3.14, Add php7-zip package 20.05.21: - Create separate volume for image data 23.01.21: - Rebasing to alpine 3.13. 12.12.20: - Increased upload_max_filesize in php.ini 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.06.19: - Add ffmpeg and other deps as needed by popular plugins. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.03.19: - Add php-ctype & php-curl. 22.02.19: - Rebasing to alpine 3.9, add php-ldap. 28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch. 25.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 20.04.17: - Add php7-exif package, thanks iiska 23.02.17: - Rebase to alpine linux 3.5 and nginx. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 29.08.15: - Initial Release.","title":"piwigo"},{"location":"images/docker-piwigo/#linuxserverpiwigo","text":"Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.","title":"linuxserver/piwigo"},{"location":"images/docker-piwigo/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-piwigo/#application-setup","text":"You must create a user and database for piwigo to use in a mysql/mariadb server. Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own. The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc.\"","title":"Application Setup"},{"location":"images/docker-piwigo/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-piwigo/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : piwigo : image : lscr.io/linuxserver/piwigo:latest container_name : piwigo environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/appdata/gallery:/gallery ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-piwigo/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = piwigo \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/appdata/config:/config \\ -v /path/to/appdata/gallery:/gallery \\ --restart unless-stopped \\ lscr.io/linuxserver/piwigo:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-piwigo/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-piwigo/#ports-p","text":"Parameter Function 80 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-piwigo/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-piwigo/#volume-mappings-v","text":"Volume Function /config Configuration files. /gallery Image storage for Piwigo","title":"Volume Mappings (-v)"},{"location":"images/docker-piwigo/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-piwigo/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-piwigo/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-piwigo/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-piwigo/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-piwigo/#support-info","text":"Shell access whilst the container is running: docker exec -it piwigo /bin/bash To monitor the logs of the container in realtime: docker logs -f piwigo Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piwigo Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piwigo:latest","title":"Support Info"},{"location":"images/docker-piwigo/#versions","text":"08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 29.06.21: - Rebase to 3.14, Add php7-zip package 20.05.21: - Create separate volume for image data 23.01.21: - Rebasing to alpine 3.13. 12.12.20: - Increased upload_max_filesize in php.ini 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 12.06.19: - Add ffmpeg and other deps as needed by popular plugins. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.03.19: - Add php-ctype & php-curl. 22.02.19: - Rebasing to alpine 3.9, add php-ldap. 28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch. 25.01.18: - Rebase to alpine linux 3.7. 25.05.17: - Rebase to alpine linux 3.6. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 20.04.17: - Add php7-exif package, thanks iiska 23.02.17: - Rebase to alpine linux 3.5 and nginx. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 29.08.15: - Initial Release.","title":"Versions"},{"location":"images/docker-pixapop/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/pixapop Pixapop is an open-source single page application to view your photos in the easiest way possible. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pixapop : image : lscr.io/linuxserver/pixapop:latest container_name : pixapop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - APP_USERNAME=admin #optional - APP_PASSWORD=admin #optional volumes : - /path/to/config:/config - /path/to/photos:/photos ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pixapop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e APP_USERNAME = admin ` #optional` \\ -e APP_PASSWORD = admin ` #optional` \\ -p 80 :80 \\ -v /path/to/config:/config \\ -v /path/to/photos:/photos \\ --restart unless-stopped \\ lscr.io/linuxserver/pixapop:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. APP_USERNAME=admin Specify a username to enable authentication. APP_PASSWORD=admin Specify a password to enable authentication. Volume Mappings ( -v ) Volume Function /config Stores config and logs for nginx base. /photos Your local folder of photos. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pixapop /bin/bash To monitor the logs of the container in realtime: docker logs -f pixapop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pixapop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pixapop:latest Versions 14.10.22 - Deprecate image. 17.12.20 - Move image to main linuxserver repo, add notice to container log 18.03.19 - Update build dependencies 18.03.19 - Add build dependencies 17.03.19 - Initial release","title":"pixapop"},{"location":"images/docker-pixapop/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-pixapop/#linuxserverpixapop","text":"Pixapop is an open-source single page application to view your photos in the easiest way possible.","title":"linuxserver/pixapop"},{"location":"images/docker-pixapop/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pixapop/#application-setup","text":"Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.","title":"Application Setup"},{"location":"images/docker-pixapop/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pixapop/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pixapop : image : lscr.io/linuxserver/pixapop:latest container_name : pixapop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - APP_USERNAME=admin #optional - APP_PASSWORD=admin #optional volumes : - /path/to/config:/config - /path/to/photos:/photos ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pixapop/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pixapop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e APP_USERNAME = admin ` #optional` \\ -e APP_PASSWORD = admin ` #optional` \\ -p 80 :80 \\ -v /path/to/config:/config \\ -v /path/to/photos:/photos \\ --restart unless-stopped \\ lscr.io/linuxserver/pixapop:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pixapop/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pixapop/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-pixapop/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. APP_USERNAME=admin Specify a username to enable authentication. APP_PASSWORD=admin Specify a password to enable authentication.","title":"Environment Variables (-e)"},{"location":"images/docker-pixapop/#volume-mappings-v","text":"Volume Function /config Stores config and logs for nginx base. /photos Your local folder of photos.","title":"Volume Mappings (-v)"},{"location":"images/docker-pixapop/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-pixapop/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pixapop/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pixapop/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pixapop/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pixapop/#support-info","text":"Shell access whilst the container is running: docker exec -it pixapop /bin/bash To monitor the logs of the container in realtime: docker logs -f pixapop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pixapop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pixapop:latest","title":"Support Info"},{"location":"images/docker-pixapop/#versions","text":"14.10.22 - Deprecate image. 17.12.20 - Move image to main linuxserver repo, add notice to container log 18.03.19 - Update build dependencies 18.03.19 - Add build dependencies 17.03.19 - Initial release","title":"Versions"},{"location":"images/docker-plex-meta-manager/","text":"linuxserver/plex-meta-manager Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. develop \u2705 Latest commits from the develop branch Application Setup There is a walkthrough available to help get you up and running. This image supports all of the environment variables listed here and all commandline arguments. To perform a one-time run use docker run (or docker-compose run ) with the --rm and -e PMM_RUN=True arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion. For more information see the official wiki . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : plex-meta-manager : image : lscr.io/linuxserver/plex-meta-manager:latest container_name : plex-meta-manager environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PMM_CONFIG=/config/config.yml #optional - PMM_TIME=03:00 #optional - PMM_RUN=False #optional - PMM_TEST=False #optional - PMM_NO_MISSING=False #optional volumes : - /path/to/appdata/config:/config restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = plex-meta-manager \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PMM_CONFIG = /config/config.yml ` #optional` \\ -e PMM_TIME = 03 :00 ` #optional` \\ -e PMM_RUN = False ` #optional` \\ -e PMM_TEST = False ` #optional` \\ -e PMM_NO_MISSING = False ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/plex-meta-manager:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PMM_CONFIG=/config/config.yml Specify a custom config file to use. PMM_TIME=03:00 Comma-separated list of times to update each day. Format: HH:MM . PMM_RUN=False Set to True to run without the scheduler. PMM_TEST=False Set to True to run in debug mode with only collections that have test: true . PMM_NO_MISSING=False Set to True to run without any of the missing movie/show functions. Volume Mappings ( -v ) Volume Function /config Local path for plex-meta-manager config files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it plex-meta-manager /bin/bash To monitor the logs of the container in realtime: docker logs -f plex-meta-manager Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex-meta-manager Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex-meta-manager:latest Versions 11.12.22: - Rebase master to Alpine 3.17. 08.11.22: - Add develop branch. 25.10.22: - Support commandline args and relative paths. 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 30.01.22: - Initial Release.","title":"plex-meta-manager"},{"location":"images/docker-plex-meta-manager/#linuxserverplex-meta-manager","text":"Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.","title":"linuxserver/plex-meta-manager"},{"location":"images/docker-plex-meta-manager/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-plex-meta-manager/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. develop \u2705 Latest commits from the develop branch","title":"Version Tags"},{"location":"images/docker-plex-meta-manager/#application-setup","text":"There is a walkthrough available to help get you up and running. This image supports all of the environment variables listed here and all commandline arguments. To perform a one-time run use docker run (or docker-compose run ) with the --rm and -e PMM_RUN=True arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion. For more information see the official wiki .","title":"Application Setup"},{"location":"images/docker-plex-meta-manager/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-plex-meta-manager/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : plex-meta-manager : image : lscr.io/linuxserver/plex-meta-manager:latest container_name : plex-meta-manager environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - PMM_CONFIG=/config/config.yml #optional - PMM_TIME=03:00 #optional - PMM_RUN=False #optional - PMM_TEST=False #optional - PMM_NO_MISSING=False #optional volumes : - /path/to/appdata/config:/config restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-plex-meta-manager/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = plex-meta-manager \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e PMM_CONFIG = /config/config.yml ` #optional` \\ -e PMM_TIME = 03 :00 ` #optional` \\ -e PMM_RUN = False ` #optional` \\ -e PMM_TEST = False ` #optional` \\ -e PMM_NO_MISSING = False ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/plex-meta-manager:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-plex-meta-manager/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-plex-meta-manager/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-plex-meta-manager/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PMM_CONFIG=/config/config.yml Specify a custom config file to use. PMM_TIME=03:00 Comma-separated list of times to update each day. Format: HH:MM . PMM_RUN=False Set to True to run without the scheduler. PMM_TEST=False Set to True to run in debug mode with only collections that have test: true . PMM_NO_MISSING=False Set to True to run without any of the missing movie/show functions.","title":"Environment Variables (-e)"},{"location":"images/docker-plex-meta-manager/#volume-mappings-v","text":"Volume Function /config Local path for plex-meta-manager config files.","title":"Volume Mappings (-v)"},{"location":"images/docker-plex-meta-manager/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-plex-meta-manager/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-plex-meta-manager/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-plex-meta-manager/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-plex-meta-manager/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-plex-meta-manager/#support-info","text":"Shell access whilst the container is running: docker exec -it plex-meta-manager /bin/bash To monitor the logs of the container in realtime: docker logs -f plex-meta-manager Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex-meta-manager Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex-meta-manager:latest","title":"Support Info"},{"location":"images/docker-plex-meta-manager/#versions","text":"11.12.22: - Rebase master to Alpine 3.17. 08.11.22: - Add develop branch. 25.10.22: - Support commandline args and relative paths. 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 30.01.22: - Initial Release.","title":"Versions"},{"location":"images/docker-plex/","text":"linuxserver/plex Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases with Focal baseimage bionic \u2705 DEPRECATED - Stable releases with Bionic baseimage Application Setup Webui can be found at :32400/web ** Note about updates, if there is no value set for the VERSION variable, then no updates will take place.** ** For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui** Valid settings for VERSION are:- IMPORTANT NOTE:- YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT docker : Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command. latest : will update plex to the latest version available that you are entitled to. public : will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates. : will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass. Hardware Acceleration Intel Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the plex docker. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : plex : image : lscr.io/linuxserver/plex:latest container_name : plex network_mode : host environment : - PUID=1000 - PGID=1000 - VERSION=docker - PLEX_CLAIM= #optional volumes : - /path/to/library:/config - /path/to/tvseries:/tv - /path/to/movies:/movies restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = plex \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e VERSION = docker \\ -e PLEX_CLAIM = ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvseries:/tv \\ -v /path/to/movies:/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/plex:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Networking ( --net ) Parameter Function --net=host Use Host Networking Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation VERSION=docker Set whether to update plex or not - see Application Setup section. PLEX_CLAIM= Optionally you can obtain a claim token from https://plex.tv/claim and input here. Keep in mind that the claim tokens expire within 4 minutes. Volume Mappings ( -v ) Volume Function /config Plex library location. This can grow very large, 50gb+ is likely for a large collection. /tv Media goes here. Add as many as needed e.g. /movies , /tv , etc. /movies Media goes here. Add as many as needed e.g. /movies , /tv , etc. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Optional Parameters If you want to run the container in bridge network mode (instead of the recommended host network mode) you will need to specify ports. The official documentation for ports lists 32400 as the only required port. The rest of the ports are optionally used for specific purposes listed in the documentation. If you have not already claimed your server (first time setup) you need to set PLEX_CLAIM to claim a server set up with bridge networking. -p 32400:32400 \\ -p 1900:1900/udp \\ -p 3005:3005 \\ -p 5353:5353/udp \\ -p 8324:8324 \\ -p 32410:32410/udp \\ -p 32412:32412/udp \\ -p 32413:32413/udp \\ -p 32414:32414/udp \\ -p 32469:32469 The application accepts a series of environment variables to further customize itself on boot: Parameter Function --device=/dev/dri:/dev/dri Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section. --device=/dev/dvb:/dev/dvb Add this option to your run command if you plan on using dvb devices. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it plex /bin/bash To monitor the logs of the container in realtime: docker logs -f plex Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex:latest Versions 16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex). 18.07.22: - Pin all opencl related driver packages. 16.05.22: - Pin opencl version. 04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw. 25.12.21: - Install Intel drivers from the official repo. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu. 23.11.20: - Add Bionic branch make Focal default. 03.05.20: - Update exposed ports and example docs for bridge mode. 23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start. 04.12.19: - Add variable for setting PLEX_CLAIM. Remove /transcode volume mapping as it is now set via plex gui and defaults to a location under /config . 06.08.19: - Add variable for setting UMASK. 10.07.19: - Fix permissions for tuner (/dev/dvb) devices. 20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.03.19: - Fix update logic for VERSION=public . 14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64. 15.02.19: - Clean up plex pid after unclean stop. 11.02.19: - Fix nvidia variables, add device variables. 16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service. 07.09.18: - Rebase to ubuntu bionic, add udev package. 09.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Add unrar package as per requests, for subzero plugin. 11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library 03.01.17: - Use case insensitive version variable matching rather than export and make lowercase. 17.10.16: - Allow use of uppercase version variable 01.10.16: - Add TZ info to README. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 22.08.16: - Rebased to xenial and s6 overlay 07.04.16: - removed /transcode volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS 24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes. 17.09.15: - Changed to run chmod only once 19.09.15: - Plex updated their download servers from http to https 28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix. 18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42. 09.07.15: - Now with ability to pick static version number. 08.07.15: - Now with autoupdates. (Hosted by fanart.tv) 03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.","title":"plex"},{"location":"images/docker-plex/#linuxserverplex","text":"Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.","title":"linuxserver/plex"},{"location":"images/docker-plex/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-plex/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases with Focal baseimage bionic \u2705 DEPRECATED - Stable releases with Bionic baseimage","title":"Version Tags"},{"location":"images/docker-plex/#application-setup","text":"Webui can be found at :32400/web ** Note about updates, if there is no value set for the VERSION variable, then no updates will take place.** ** For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui** Valid settings for VERSION are:- IMPORTANT NOTE:- YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT docker : Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command. latest : will update plex to the latest version available that you are entitled to. public : will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates. : will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.","title":"Application Setup"},{"location":"images/docker-plex/#hardware-acceleration","text":"","title":"Hardware Acceleration"},{"location":"images/docker-plex/#intel","text":"Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel"},{"location":"images/docker-plex/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the plex docker.","title":"Nvidia"},{"location":"images/docker-plex/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-plex/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : plex : image : lscr.io/linuxserver/plex:latest container_name : plex network_mode : host environment : - PUID=1000 - PGID=1000 - VERSION=docker - PLEX_CLAIM= #optional volumes : - /path/to/library:/config - /path/to/tvseries:/tv - /path/to/movies:/movies restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-plex/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = plex \\ --net = host \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e VERSION = docker \\ -e PLEX_CLAIM = ` #optional` \\ -v /path/to/library:/config \\ -v /path/to/tvseries:/tv \\ -v /path/to/movies:/movies \\ --restart unless-stopped \\ lscr.io/linuxserver/plex:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-plex/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-plex/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-plex/#networking-net","text":"Parameter Function --net=host Use Host Networking","title":"Networking (--net)"},{"location":"images/docker-plex/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation VERSION=docker Set whether to update plex or not - see Application Setup section. PLEX_CLAIM= Optionally you can obtain a claim token from https://plex.tv/claim and input here. Keep in mind that the claim tokens expire within 4 minutes.","title":"Environment Variables (-e)"},{"location":"images/docker-plex/#volume-mappings-v","text":"Volume Function /config Plex library location. This can grow very large, 50gb+ is likely for a large collection. /tv Media goes here. Add as many as needed e.g. /movies , /tv , etc. /movies Media goes here. Add as many as needed e.g. /movies , /tv , etc.","title":"Volume Mappings (-v)"},{"location":"images/docker-plex/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-plex/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-plex/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-plex/#optional-parameters","text":"If you want to run the container in bridge network mode (instead of the recommended host network mode) you will need to specify ports. The official documentation for ports lists 32400 as the only required port. The rest of the ports are optionally used for specific purposes listed in the documentation. If you have not already claimed your server (first time setup) you need to set PLEX_CLAIM to claim a server set up with bridge networking. -p 32400:32400 \\ -p 1900:1900/udp \\ -p 3005:3005 \\ -p 5353:5353/udp \\ -p 8324:8324 \\ -p 32410:32410/udp \\ -p 32412:32412/udp \\ -p 32413:32413/udp \\ -p 32414:32414/udp \\ -p 32469:32469 The application accepts a series of environment variables to further customize itself on boot: Parameter Function --device=/dev/dri:/dev/dri Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section. --device=/dev/dvb:/dev/dvb Add this option to your run command if you plan on using dvb devices.","title":"Optional Parameters"},{"location":"images/docker-plex/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-plex/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-plex/#support-info","text":"Shell access whilst the container is running: docker exec -it plex /bin/bash To monitor the logs of the container in realtime: docker logs -f plex Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex:latest","title":"Support Info"},{"location":"images/docker-plex/#versions","text":"16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex). 18.07.22: - Pin all opencl related driver packages. 16.05.22: - Pin opencl version. 04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw. 25.12.21: - Install Intel drivers from the official repo. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu. 23.11.20: - Add Bionic branch make Focal default. 03.05.20: - Update exposed ports and example docs for bridge mode. 23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start. 04.12.19: - Add variable for setting PLEX_CLAIM. Remove /transcode volume mapping as it is now set via plex gui and defaults to a location under /config . 06.08.19: - Add variable for setting UMASK. 10.07.19: - Fix permissions for tuner (/dev/dvb) devices. 20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.03.19: - Fix update logic for VERSION=public . 14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64. 15.02.19: - Clean up plex pid after unclean stop. 11.02.19: - Fix nvidia variables, add device variables. 16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service. 07.09.18: - Rebase to ubuntu bionic, add udev package. 09.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Add unrar package as per requests, for subzero plugin. 11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library 03.01.17: - Use case insensitive version variable matching rather than export and make lowercase. 17.10.16: - Allow use of uppercase version variable 01.10.16: - Add TZ info to README. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 22.08.16: - Rebased to xenial and s6 overlay 07.04.16: - removed /transcode volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS 24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes. 17.09.15: - Changed to run chmod only once 19.09.15: - Plex updated their download servers from http to https 28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix. 18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42. 09.07.15: - Now with ability to pick static version number. 08.07.15: - Now with autoupdates. (Hosted by fanart.tv) 03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.","title":"Versions"},{"location":"images/docker-projectsend/","text":"linuxserver/projectsend Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27 Requires a user and database in either mysql or mariadb. To use translations, follow the instructions here . The necessary paths are symlinked under /config/translations (note that the \"templates\" paths don't need lang subdirectories). More info at ProjectSend . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : projectsend : image : lscr.io/linuxserver/projectsend:latest container_name : projectsend environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MAX_UPLOAD=5000 volumes : - :/config - :/data ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = projectsend \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MAX_UPLOAD = 5000 \\ -p 80 :80 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/projectsend:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAX_UPLOAD=5000 To set maximum upload size (in MB), default if unset is 5000. Volume Mappings ( -v ) Volume Function /config Where to store projectsend config files. /data Where to store files to share. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it projectsend /bin/bash To monitor the logs of the container in realtime: docker logs -f projectsend Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' projectsend Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/projectsend:latest Versions 23.08.22: - Add translation support 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 24.06.21: - Rebasing to alpine 3.14, switch to nginx 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 11.06.17: - Fetch version from github. 09.12.17: - Rebase to alpine 3.7. 13.06.17: - Initial Release.","title":"projectsend"},{"location":"images/docker-projectsend/#linuxserverprojectsend","text":"Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.","title":"linuxserver/projectsend"},{"location":"images/docker-projectsend/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-projectsend/#application-setup","text":"IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27 Requires a user and database in either mysql or mariadb. To use translations, follow the instructions here . The necessary paths are symlinked under /config/translations (note that the \"templates\" paths don't need lang subdirectories). More info at ProjectSend .","title":"Application Setup"},{"location":"images/docker-projectsend/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-projectsend/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : projectsend : image : lscr.io/linuxserver/projectsend:latest container_name : projectsend environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MAX_UPLOAD=5000 volumes : - :/config - :/data ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-projectsend/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = projectsend \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MAX_UPLOAD = 5000 \\ -p 80 :80 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/projectsend:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-projectsend/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-projectsend/#ports-p","text":"Parameter Function 80 WebUI","title":"Ports (-p)"},{"location":"images/docker-projectsend/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAX_UPLOAD=5000 To set maximum upload size (in MB), default if unset is 5000.","title":"Environment Variables (-e)"},{"location":"images/docker-projectsend/#volume-mappings-v","text":"Volume Function /config Where to store projectsend config files. /data Where to store files to share.","title":"Volume Mappings (-v)"},{"location":"images/docker-projectsend/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-projectsend/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-projectsend/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-projectsend/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-projectsend/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-projectsend/#support-info","text":"Shell access whilst the container is running: docker exec -it projectsend /bin/bash To monitor the logs of the container in realtime: docker logs -f projectsend Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' projectsend Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/projectsend:latest","title":"Support Info"},{"location":"images/docker-projectsend/#versions","text":"23.08.22: - Add translation support 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 24.06.21: - Rebasing to alpine 3.14, switch to nginx 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch. 11.06.17: - Fetch version from github. 09.12.17: - Rebase to alpine 3.7. 13.06.17: - Initial Release.","title":"Versions"},{"location":"images/docker-prowlarr/","text":"linuxserver/prowlarr Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all). Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Prowlarr stable releases develop \u2705 Prowlarr releases from their develop branch nightly \u2705 Prowlarr releases from their nightly branch Application Setup Access the webui at :9696 , for more information check out Prowlarr . Setup info can be found here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : prowlarr : image : lscr.io/linuxserver/prowlarr:latest container_name : prowlarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 9696:9696 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = prowlarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9696 :9696 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/prowlarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9696 The port for the Prowlarr webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Prowlarr Volume Mappings ( -v ) Volume Function /config Database and Prowlarr configs Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it prowlarr /bin/bash To monitor the logs of the container in realtime: docker logs -f prowlarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' prowlarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/prowlarr:latest Versions 03.01.23: - Publish stable release. 20.02.22: - Rebase develop branch to Alpine. 06.06.21: - Initial realease.","title":"prowlarr"},{"location":"images/docker-prowlarr/#linuxserverprowlarr","text":"Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).","title":"linuxserver/prowlarr"},{"location":"images/docker-prowlarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-prowlarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Prowlarr stable releases develop \u2705 Prowlarr releases from their develop branch nightly \u2705 Prowlarr releases from their nightly branch","title":"Version Tags"},{"location":"images/docker-prowlarr/#application-setup","text":"Access the webui at :9696 , for more information check out Prowlarr . Setup info can be found here .","title":"Application Setup"},{"location":"images/docker-prowlarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-prowlarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : prowlarr : image : lscr.io/linuxserver/prowlarr:latest container_name : prowlarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config ports : - 9696:9696 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-prowlarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = prowlarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9696 :9696 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/prowlarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-prowlarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-prowlarr/#ports-p","text":"Parameter Function 9696 The port for the Prowlarr webinterface","title":"Ports (-p)"},{"location":"images/docker-prowlarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Prowlarr","title":"Environment Variables (-e)"},{"location":"images/docker-prowlarr/#volume-mappings-v","text":"Volume Function /config Database and Prowlarr configs","title":"Volume Mappings (-v)"},{"location":"images/docker-prowlarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-prowlarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-prowlarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-prowlarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-prowlarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-prowlarr/#support-info","text":"Shell access whilst the container is running: docker exec -it prowlarr /bin/bash To monitor the logs of the container in realtime: docker logs -f prowlarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' prowlarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/prowlarr:latest","title":"Support Info"},{"location":"images/docker-prowlarr/#versions","text":"03.01.23: - Publish stable release. 20.02.22: - Rebase develop branch to Alpine. 06.06.21: - Initial realease.","title":"Versions"},{"location":"images/docker-pwndrop/","text":"linuxserver/pwndrop Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the web gui at http://:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one). Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pwndrop : image : lscr.io/linuxserver/pwndrop:latest container_name : pwndrop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SECRET_PATH=/pwndrop #optional volumes : - /path/to/appdata:/config ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pwndrop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SECRET_PATH = /pwndrop ` #optional` \\ -p 8080 :8080 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pwndrop:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SECRET_PATH=/pwndrop Secret path for admin access. Defaults to /pwndrop . This parameter only takes effect during initial install; it can later be changed in the web gui. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration and data. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pwndrop /bin/bash To monitor the logs of the container in realtime: docker logs -f pwndrop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pwndrop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pwndrop:latest Versions 19.09.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 17.04.20: - Initial Release.","title":"pwndrop"},{"location":"images/docker-pwndrop/#linuxserverpwndrop","text":"Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.","title":"linuxserver/pwndrop"},{"location":"images/docker-pwndrop/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pwndrop/#application-setup","text":"Access the web gui at http://:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one).","title":"Application Setup"},{"location":"images/docker-pwndrop/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pwndrop/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pwndrop : image : lscr.io/linuxserver/pwndrop:latest container_name : pwndrop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SECRET_PATH=/pwndrop #optional volumes : - /path/to/appdata:/config ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pwndrop/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pwndrop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SECRET_PATH = /pwndrop ` #optional` \\ -p 8080 :8080 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pwndrop:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pwndrop/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pwndrop/#ports-p","text":"Parameter Function 8080 web gui","title":"Ports (-p)"},{"location":"images/docker-pwndrop/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SECRET_PATH=/pwndrop Secret path for admin access. Defaults to /pwndrop . This parameter only takes effect during initial install; it can later be changed in the web gui.","title":"Environment Variables (-e)"},{"location":"images/docker-pwndrop/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration and data.","title":"Volume Mappings (-v)"},{"location":"images/docker-pwndrop/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-pwndrop/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pwndrop/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pwndrop/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pwndrop/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pwndrop/#support-info","text":"Shell access whilst the container is running: docker exec -it pwndrop /bin/bash To monitor the logs of the container in realtime: docker logs -f pwndrop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pwndrop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pwndrop:latest","title":"Support Info"},{"location":"images/docker-pwndrop/#versions","text":"19.09.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 17.04.20: - Initial Release.","title":"Versions"},{"location":"images/docker-pydio-cells/","text":"linuxserver/pydio-cells Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended. Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying. Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pydio-cells : image : lscr.io/linuxserver/pydio-cells:latest container_name : pydio-cells hostname : pydio-cells environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - EXTERNALURL=yourdomain.url - SERVER_IP=0.0.0.0 #optional volumes : - /path/to/appdata/config:/config ports : - 8080:8080 - 33060:33060 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pydio-cells \\ --hostname = pydio-cells \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e EXTERNALURL = yourdomain.url \\ -e SERVER_IP = 0 .0.0.0 ` #optional` \\ -p 8080 :8080 \\ -p 33060 :33060 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pydio-cells:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Http port 33060 gRPC port (required for CellsSync). Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. EXTERNALURL=yourdomain.url The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT). SERVER_IP=0.0.0.0 Enter the LAN IP of the docker server. Required for local access by IP, added to self signed cert as SAN (not required if accessing only through reverse proxy). Volume Mappings ( -v ) Volume Function /config All the config files reside here. Miscellaneous Options Parameter Function --hostname= Pydio Cells uses the hostname to verify local files. This setting is required and should not be changed after it has been set. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pydio-cells /bin/bash To monitor the logs of the container in realtime: docker logs -f pydio-cells Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio-cells Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio-cells:latest Versions 01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility. 19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4. 19.09.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add SERVER_IP var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync. 17.04.20: - Update compile options, previous release was broken for new installs. 19.12.19: - Rebasing to alpine 3.11. 12.12.19: - Initial Release","title":"pydio-cells"},{"location":"images/docker-pydio-cells/#linuxserverpydio-cells","text":"Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.","title":"linuxserver/pydio-cells"},{"location":"images/docker-pydio-cells/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pydio-cells/#application-setup","text":"You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended. Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying.","title":"Application Setup"},{"location":"images/docker-pydio-cells/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-pydio-cells/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pydio-cells/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pydio-cells : image : lscr.io/linuxserver/pydio-cells:latest container_name : pydio-cells hostname : pydio-cells environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - EXTERNALURL=yourdomain.url - SERVER_IP=0.0.0.0 #optional volumes : - /path/to/appdata/config:/config ports : - 8080:8080 - 33060:33060 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pydio-cells/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pydio-cells \\ --hostname = pydio-cells \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e EXTERNALURL = yourdomain.url \\ -e SERVER_IP = 0 .0.0.0 ` #optional` \\ -p 8080 :8080 \\ -p 33060 :33060 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/pydio-cells:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pydio-cells/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pydio-cells/#ports-p","text":"Parameter Function 8080 Http port 33060 gRPC port (required for CellsSync).","title":"Ports (-p)"},{"location":"images/docker-pydio-cells/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. EXTERNALURL=yourdomain.url The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT). SERVER_IP=0.0.0.0 Enter the LAN IP of the docker server. Required for local access by IP, added to self signed cert as SAN (not required if accessing only through reverse proxy).","title":"Environment Variables (-e)"},{"location":"images/docker-pydio-cells/#volume-mappings-v","text":"Volume Function /config All the config files reside here.","title":"Volume Mappings (-v)"},{"location":"images/docker-pydio-cells/#miscellaneous-options","text":"Parameter Function --hostname= Pydio Cells uses the hostname to verify local files. This setting is required and should not be changed after it has been set.","title":"Miscellaneous Options"},{"location":"images/docker-pydio-cells/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pydio-cells/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pydio-cells/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pydio-cells/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pydio-cells/#support-info","text":"Shell access whilst the container is running: docker exec -it pydio-cells /bin/bash To monitor the logs of the container in realtime: docker logs -f pydio-cells Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio-cells Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio-cells:latest","title":"Support Info"},{"location":"images/docker-pydio-cells/#versions","text":"01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility. 19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4. 19.09.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add SERVER_IP var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync. 17.04.20: - Update compile options, previous release was broken for new installs. 19.12.19: - Rebasing to alpine 3.11. 12.12.19: - Initial Release","title":"Versions"},{"location":"images/docker-pydio/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/pydio Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : pydio : image : lscr.io/linuxserver/pydio container_name : pydio environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/data ports : - 443:443 restart : unless-stopped docker cli docker run -d \\ --name=pydio \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 443:443 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/pydio Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 443 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where pydio should store it's configuration files. /data Where pydio should store uploaded files. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead. You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname... Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own. For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard. For email settings edit the file /config/ssmtp.conf and restart the container. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pydio /bin/bash To monitor the logs of the container in realtime: docker logs -f pydio Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio Versions 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8. 12.01.18: - Rebase to alpine linux 3.7. 28.10.17: - php7-ssh2 moved from testing to community repo. 25.05.17: - Rebase to alpine linux 3.6. 17.05.17: - Make default install pydio 8. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 28.02.17: - Modify sed for data path. 18.02.17: - Rebase to alpine linux 3.5. 05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 08.09.15: - Initial Release.","title":"pydio"},{"location":"images/docker-pydio/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-pydio/#linuxserverpydio","text":"Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more.","title":"linuxserver/pydio"},{"location":"images/docker-pydio/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-pydio/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-pydio/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : pydio : image : lscr.io/linuxserver/pydio container_name : pydio environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/data ports : - 443:443 restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-pydio/#docker-cli","text":"docker run -d \\ --name=pydio \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 443:443 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/pydio","title":"docker cli"},{"location":"images/docker-pydio/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pydio/#ports-p","text":"Parameter Function 443 WebUI","title":"Ports (-p)"},{"location":"images/docker-pydio/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-pydio/#volume-mappings-v","text":"Volume Function /config Where pydio should store it's configuration files. /data Where pydio should store uploaded files.","title":"Volume Mappings (-v)"},{"location":"images/docker-pydio/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pydio/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pydio/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-pydio/#application-setup","text":"THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead. You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname... Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own. For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard. For email settings edit the file /config/ssmtp.conf and restart the container.","title":"Application Setup"},{"location":"images/docker-pydio/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pydio/#support-info","text":"Shell access whilst the container is running: docker exec -it pydio /bin/bash To monitor the logs of the container in realtime: docker logs -f pydio Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio","title":"Support Info"},{"location":"images/docker-pydio/#versions","text":"23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8. 12.01.18: - Rebase to alpine linux 3.7. 28.10.17: - php7-ssh2 moved from testing to community repo. 25.05.17: - Rebase to alpine linux 3.6. 17.05.17: - Make default install pydio 8. 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick. 28.02.17: - Modify sed for data path. 18.02.17: - Rebase to alpine linux 3.5. 05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite. 14.10.16: - Add version layer information. 10.09.16: - Add layer badges to README. 08.09.15: - Initial Release.","title":"Versions"},{"location":"images/docker-pyload-ng/","text":"linuxserver/pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from pyLoad Next develop \u2705 Releases from pyload Next develop branch Application Setup Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload For general usage please see the pyLoad wiki here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pyload-ng : image : lscr.io/linuxserver/pyload-ng:latest container_name : pyload-ng environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads ports : - 8000:8000 - 9666:9666 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pyload-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -p 9666 :9666 ` #optional` \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/pyload-ng:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 Allows HTTP access to the application 9666 Click'n'Load port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pyload-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f pyload-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload-ng:latest Versions 02.02.22: - Rebase master to alpine 3.17. 02.02.22: - Add ffmpeg for the Youtube plugin. 24.01.22: - Replace unrar with p7zip. 24.01.22: - Initial release.","title":"pyload-ng"},{"location":"images/docker-pyload-ng/#linuxserverpyload-ng","text":"pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.","title":"linuxserver/pyload-ng"},{"location":"images/docker-pyload-ng/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pyload-ng/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from pyLoad Next develop \u2705 Releases from pyload Next develop branch","title":"Version Tags"},{"location":"images/docker-pyload-ng/#application-setup","text":"Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload For general usage please see the pyLoad wiki here .","title":"Application Setup"},{"location":"images/docker-pyload-ng/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pyload-ng/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pyload-ng : image : lscr.io/linuxserver/pyload-ng:latest container_name : pyload-ng environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads ports : - 8000:8000 - 9666:9666 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pyload-ng/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pyload-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -p 9666 :9666 ` #optional` \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/pyload-ng:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pyload-ng/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pyload-ng/#ports-p","text":"Parameter Function 8000 Allows HTTP access to the application 9666 Click'n'Load port.","title":"Ports (-p)"},{"location":"images/docker-pyload-ng/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-pyload-ng/#volume-mappings-v","text":"Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads","title":"Volume Mappings (-v)"},{"location":"images/docker-pyload-ng/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-pyload-ng/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pyload-ng/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pyload-ng/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pyload-ng/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pyload-ng/#support-info","text":"Shell access whilst the container is running: docker exec -it pyload-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f pyload-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload-ng:latest","title":"Support Info"},{"location":"images/docker-pyload-ng/#versions","text":"02.02.22: - Rebase master to alpine 3.17. 02.02.22: - Add ffmpeg for the Youtube plugin. 24.01.22: - Replace unrar with p7zip. 24.01.22: - Initial release.","title":"Versions"},{"location":"images/docker-pyload/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/ linuxserver/pyload Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Version Tags This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable releases from Pyload ng Development releases from Pyload-ng (currently alpha) Application Setup Access the web interface at http://your-ip:8000 the default login is: username - admin password - password For the ng tag, the default user/pass are pyload/pyload . For general usage please see the pyLoad wiki here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pyload : image : lscr.io/linuxserver/pyload container_name : pyload environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/pyload/config:/config - /path/to/downloads:/downloads ports : - 8000:8000 - 7227:7227 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pyload \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -p 7227 :7227 ` #optional` \\ -v /path/to/pyload/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/pyload Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8000 Allows HTTP access to the application 7227 pyLoad control port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pyload /bin/bash To monitor the logs of the container in realtime: docker logs -f pyload Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload Versions 25.01.22: - Deprecate. 23.02.21: - Add Python plugin passlib . 16.02.21: - Publish ng tag for pyload-ng (currently alpha). 04.11.20: - Rebase to alpine 3.11. 18.10.20: - Chown app folder to fix plugin updater. 18.07.19: - Add ffmpeg for plugins the do video processing. 28.06.19: - Rebasing to alpine 3.10. 08.06.19: - Initial release.","title":"pyload"},{"location":"images/docker-pyload/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/","title":"DEPRECATION NOTICE"},{"location":"images/docker-pyload/#linuxserverpyload","text":"Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.","title":"linuxserver/pyload"},{"location":"images/docker-pyload/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-pyload/#version-tags","text":"This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them. Tag Description latest Stable releases from Pyload ng Development releases from Pyload-ng (currently alpha)","title":"Version Tags"},{"location":"images/docker-pyload/#application-setup","text":"Access the web interface at http://your-ip:8000 the default login is: username - admin password - password For the ng tag, the default user/pass are pyload/pyload . For general usage please see the pyLoad wiki here .","title":"Application Setup"},{"location":"images/docker-pyload/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pyload/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pyload : image : lscr.io/linuxserver/pyload container_name : pyload environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/pyload/config:/config - /path/to/downloads:/downloads ports : - 8000:8000 - 7227:7227 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pyload/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pyload \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8000 :8000 \\ -p 7227 :7227 ` #optional` \\ -v /path/to/pyload/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/pyload","title":"docker cli (click here for more info)"},{"location":"images/docker-pyload/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pyload/#ports-p","text":"Parameter Function 8000 Allows HTTP access to the application 7227 pyLoad control port","title":"Ports (-p)"},{"location":"images/docker-pyload/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-pyload/#volume-mappings-v","text":"Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads","title":"Volume Mappings (-v)"},{"location":"images/docker-pyload/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-pyload/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pyload/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pyload/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pyload/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pyload/#support-info","text":"Shell access whilst the container is running: docker exec -it pyload /bin/bash To monitor the logs of the container in realtime: docker logs -f pyload Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload","title":"Support Info"},{"location":"images/docker-pyload/#versions","text":"25.01.22: - Deprecate. 23.02.21: - Add Python plugin passlib . 16.02.21: - Publish ng tag for pyload-ng (currently alpha). 04.11.20: - Rebase to alpine 3.11. 18.10.20: - Chown app folder to fix plugin updater. 18.07.19: - Add ffmpeg for plugins the do video processing. 28.06.19: - Rebasing to alpine 3.10. 08.06.19: - Initial release.","title":"Versions"},{"location":"images/docker-pylon/","text":"linuxserver/pylon Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http://your-ip:3131, more information here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : pylon : image : lscr.io/linuxserver/pylon:latest container_name : pylon environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - GITURL=https://github.com/linuxserver/docker-pylon.git #optional - PYUSER=myuser #optional - PYPASS=mypass #optional volumes : - :/code #optional ports : - 3131:3131 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = pylon \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e GITURL = https://github.com/linuxserver/docker-pylon.git ` #optional` \\ -e PYUSER = myuser ` #optional` \\ -e PYPASS = mypass ` #optional` \\ -p 3131 :3131 \\ -v :/code ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/pylon:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3131 The port for the Pylon web interface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-pylon.git Specify a git repo to checkout on first startup PYUSER=myuser Specify a basic auth user. PYPASS=mypass Specify a basic auth password. Volume Mappings ( -v ) Volume Function /code Optionally if you want the bind mount your own code and have changes survive container upgrades. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it pylon /bin/bash To monitor the logs of the container in realtime: docker logs -f pylon Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pylon Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pylon:latest Versions 19.01.22: - Rebasing to alpine 3.15. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 19.09.19: - Initial Release.","title":"pylon"},{"location":"images/docker-pylon/#linuxserverpylon","text":"Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.","title":"linuxserver/pylon"},{"location":"images/docker-pylon/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-pylon/#application-setup","text":"Access the webui at http://your-ip:3131, more information here .","title":"Application Setup"},{"location":"images/docker-pylon/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-pylon/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : pylon : image : lscr.io/linuxserver/pylon:latest container_name : pylon environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - GITURL=https://github.com/linuxserver/docker-pylon.git #optional - PYUSER=myuser #optional - PYPASS=mypass #optional volumes : - :/code #optional ports : - 3131:3131 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-pylon/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = pylon \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e GITURL = https://github.com/linuxserver/docker-pylon.git ` #optional` \\ -e PYUSER = myuser ` #optional` \\ -e PYPASS = mypass ` #optional` \\ -p 3131 :3131 \\ -v :/code ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/pylon:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-pylon/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-pylon/#ports-p","text":"Parameter Function 3131 The port for the Pylon web interface","title":"Ports (-p)"},{"location":"images/docker-pylon/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-pylon.git Specify a git repo to checkout on first startup PYUSER=myuser Specify a basic auth user. PYPASS=mypass Specify a basic auth password.","title":"Environment Variables (-e)"},{"location":"images/docker-pylon/#volume-mappings-v","text":"Volume Function /code Optionally if you want the bind mount your own code and have changes survive container upgrades.","title":"Volume Mappings (-v)"},{"location":"images/docker-pylon/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-pylon/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-pylon/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-pylon/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-pylon/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-pylon/#support-info","text":"Shell access whilst the container is running: docker exec -it pylon /bin/bash To monitor the logs of the container in realtime: docker logs -f pylon Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pylon Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pylon:latest","title":"Support Info"},{"location":"images/docker-pylon/#versions","text":"19.01.22: - Rebasing to alpine 3.15. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 19.09.19: - Initial Release.","title":"Versions"},{"location":"images/docker-qbittorrent/","text":"linuxserver/qbittorrent The Qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable qbittorrent releases libtorrentv1 \u2705 Static qbittorrent builds using libtorrent v1 Application Setup The webui is at :8080 and the default username/password is admin/adminadmin . Change username/password via the webui in the webui section of settings. WEBUI_PORT variable Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port. For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090 This should alleviate the \"white screen\" issue. If you have no webui , check the file /config/qBittorrent/qBittorrent.conf edit or add the following lines WebUI\\Address=* WebUI\\ServerDomains=* If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : qbittorrent : image : lscr.io/linuxserver/qbittorrent:latest container_name : qbittorrent environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - WEBUI_PORT=8080 volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads ports : - 8080:8080 - 6881:6881 - 6881:6881/udp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = qbittorrent \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e WEBUI_PORT = 8080 \\ -p 8080 :8080 \\ -p 6881 :6881 \\ -p 6881 :6881/udp \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/qbittorrent:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 WebUI 6881 tcp connection port 6881/udp udp connection port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London WEBUI_PORT=8080 for changing the port of the webui, see below for explanation Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /downloads Location of downloads on disk. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it qbittorrent /bin/bash To monitor the logs of the container in realtime: docker logs -f qbittorrent Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qbittorrent Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qbittorrent:latest Versions 29.11.22: - Add openssl1.1-compat for qbittorrent-cli. 31.10.22: - Add libtorrentv1 branch. 31.08.22: - Rebase to Alpine Edge again to follow latest releases. 12.08.22: - Bump unrar to 6.1.7. 16.06.22: - Rebase to Alpine 3.16 from edge. 25.05.22: - Fetch qbitorrent-cli from upstream repo. 02.03.22: - Add unrar, 7zip, and qbitorrent-cli. 01.03.22: - Add python for search plugin support. 23.02.22: - Rebase to Alpine Edge, install from Alpine repos. 19.02.22: - Add jq to build-stage 07.01.22: - Rebase to Alpine, build from source. 06.01.22: - Deprecate unstable branch. 10.02.21: - Rebase to focal. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 12.11.20: - Stop creating /config/data directory on startup 03.04.20: - Fix adding search engine plugin 02.08.19: - Add qbitorrent-cli for processing scripts. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic. 25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3. 14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2. 08.06.18: - Bump qbitorrent to 4.1.1. 26.04.18: - Bump libtorrent to 1.1.7. 02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6. 02.01.18: - Deprecate cpu_core routine lack of scaling. 19.12.17: - Update to v4.0.3. 09.02.17: - Rebase to alpine 3.7 01.12.17: - Update to v4.0.2. 27.11.17: - Update to v4 and use cpu_core routine to speed up builds. 16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui. 01.08.17: - Initial Release. 12.02.18: - Initial Release.","title":"qbittorrent"},{"location":"images/docker-qbittorrent/#linuxserverqbittorrent","text":"The Qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.","title":"linuxserver/qbittorrent"},{"location":"images/docker-qbittorrent/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-qbittorrent/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable qbittorrent releases libtorrentv1 \u2705 Static qbittorrent builds using libtorrent v1","title":"Version Tags"},{"location":"images/docker-qbittorrent/#application-setup","text":"The webui is at :8080 and the default username/password is admin/adminadmin . Change username/password via the webui in the webui section of settings.","title":"Application Setup"},{"location":"images/docker-qbittorrent/#webui_port-variable","text":"Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port. For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090 This should alleviate the \"white screen\" issue. If you have no webui , check the file /config/qBittorrent/qBittorrent.conf edit or add the following lines WebUI\\Address=* WebUI\\ServerDomains=* If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method","title":"WEBUI_PORT variable"},{"location":"images/docker-qbittorrent/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-qbittorrent/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : qbittorrent : image : lscr.io/linuxserver/qbittorrent:latest container_name : qbittorrent environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - WEBUI_PORT=8080 volumes : - /path/to/appdata/config:/config - /path/to/downloads:/downloads ports : - 8080:8080 - 6881:6881 - 6881:6881/udp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-qbittorrent/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = qbittorrent \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e WEBUI_PORT = 8080 \\ -p 8080 :8080 \\ -p 6881 :6881 \\ -p 6881 :6881/udp \\ -v /path/to/appdata/config:/config \\ -v /path/to/downloads:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/qbittorrent:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-qbittorrent/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-qbittorrent/#ports-p","text":"Parameter Function 8080 WebUI 6881 tcp connection port 6881/udp udp connection port","title":"Ports (-p)"},{"location":"images/docker-qbittorrent/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London WEBUI_PORT=8080 for changing the port of the webui, see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-qbittorrent/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /downloads Location of downloads on disk.","title":"Volume Mappings (-v)"},{"location":"images/docker-qbittorrent/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-qbittorrent/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-qbittorrent/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-qbittorrent/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-qbittorrent/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-qbittorrent/#support-info","text":"Shell access whilst the container is running: docker exec -it qbittorrent /bin/bash To monitor the logs of the container in realtime: docker logs -f qbittorrent Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qbittorrent Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qbittorrent:latest","title":"Support Info"},{"location":"images/docker-qbittorrent/#versions","text":"29.11.22: - Add openssl1.1-compat for qbittorrent-cli. 31.10.22: - Add libtorrentv1 branch. 31.08.22: - Rebase to Alpine Edge again to follow latest releases. 12.08.22: - Bump unrar to 6.1.7. 16.06.22: - Rebase to Alpine 3.16 from edge. 25.05.22: - Fetch qbitorrent-cli from upstream repo. 02.03.22: - Add unrar, 7zip, and qbitorrent-cli. 01.03.22: - Add python for search plugin support. 23.02.22: - Rebase to Alpine Edge, install from Alpine repos. 19.02.22: - Add jq to build-stage 07.01.22: - Rebase to Alpine, build from source. 06.01.22: - Deprecate unstable branch. 10.02.21: - Rebase to focal. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 12.11.20: - Stop creating /config/data directory on startup 03.04.20: - Fix adding search engine plugin 02.08.19: - Add qbitorrent-cli for processing scripts. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic. 25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3. 14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2. 08.06.18: - Bump qbitorrent to 4.1.1. 26.04.18: - Bump libtorrent to 1.1.7. 02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6. 02.01.18: - Deprecate cpu_core routine lack of scaling. 19.12.17: - Update to v4.0.3. 09.02.17: - Rebase to alpine 3.7 01.12.17: - Update to v4.0.2. 27.11.17: - Update to v4 and use cpu_core routine to speed up builds. 16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui. 01.08.17: - Initial Release. 12.02.18: - Initial Release.","title":"Versions"},{"location":"images/docker-qdirstat/","text":"linuxserver/qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : qdirstat : image : lscr.io/linuxserver/qdirstat:latest container_name : qdirstat environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = qdirstat \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/qdirstat:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 QdirStat desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores qdirstat settings and scans. /data Data you want to analyze disk usage information of. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it qdirstat /bin/bash To monitor the logs of the container in realtime: docker logs -f qdirstat Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qdirstat Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qdirstat:latest Versions 16.12.22: - Rebase to Jammy. 06.04.22: - Add xfce terminal. 13.01.22: - Compile from source. 11.01.22: - Initial release.","title":"qdirstat"},{"location":"images/docker-qdirstat/#linuxserverqdirstat","text":"QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.","title":"linuxserver/qdirstat"},{"location":"images/docker-qdirstat/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-qdirstat/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-qdirstat/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-qdirstat/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : qdirstat : image : lscr.io/linuxserver/qdirstat:latest container_name : qdirstat environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-qdirstat/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = qdirstat \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/qdirstat:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-qdirstat/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-qdirstat/#ports-p","text":"Parameter Function 3000 QdirStat desktop gui.","title":"Ports (-p)"},{"location":"images/docker-qdirstat/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-qdirstat/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores qdirstat settings and scans. /data Data you want to analyze disk usage information of.","title":"Volume Mappings (-v)"},{"location":"images/docker-qdirstat/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-qdirstat/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-qdirstat/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-qdirstat/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-qdirstat/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-qdirstat/#support-info","text":"Shell access whilst the container is running: docker exec -it qdirstat /bin/bash To monitor the logs of the container in realtime: docker logs -f qdirstat Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qdirstat Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qdirstat:latest","title":"Support Info"},{"location":"images/docker-qdirstat/#versions","text":"16.12.22: - Rebase to Jammy. 06.04.22: - Add xfce terminal. 13.01.22: - Compile from source. 11.01.22: - Initial release.","title":"Versions"},{"location":"images/docker-quassel-core/","text":"linuxserver/quassel-core Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Quassel wiki: quassel A great place to host a quassel instance is a VPS, such as DigitalOcean . For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim). Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your docker run command default: 4242 . Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect . You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io . That's it, you're done. Stateless usage To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting. Env Usage DB_BACKEND SQLite or PostgreSQL DB_PGSQL_USERNAME PostgreSQL User DB_PGSQL_PASSWORD PostgreSQL Password DB_PGSQL_HOSTNAME PostgreSQL Host DB_PGSQL_PORT PostgreSQL Port AUTH_AUTHENTICATOR Database or LDAP AUTH_LDAP_HOSTNAME LDAP Host AUTH_LDAP_PORT LDAP Port AUTH_LDAP_BIND_DN LDAP Bind Domain AUTH_LDAP_BIND_PASSWORD LDAP Password AUTH_LDAP_FILTER LDAP Authentication Filters AUTH_LDAP_UID_ATTRIBUTE LDAP UID Additionally you have RUN_OPTS that can be used to customize pathing and behvior. Option Example --strict-ident strictly bool --strict-ident --ident-daemon strictly bool --ident-daemon --ident-port --ident-port \"10113\" --ident-listen --ident-listen \"::,0.0.0.0\" --ssl-cert --ssl-cert /config/keys/cert.crt --ssl-key --ssl-key /config/keys/cert.key --require-ssl strictly bool --require-ssl Minimal example with SQLite: docker create \\ --name=quassel-core \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e RUN_OPTS='--config-from-environment' \\ -e DB_BACKEND=SQLite \\ -e AUTH_AUTHENTICATOR=Database \\ -p 4242:4242 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/quassel-core Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : quassel-core : image : lscr.io/linuxserver/quassel-core:latest container_name : quassel-core environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS=--config-from-environment #optional volumes : - :/config ports : - 4242:4242 - 113:10113 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = quassel-core \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = --config-from-environment ` #optional` \\ -p 4242 :4242 \\ -p 113 :10113 ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/quassel-core:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4242 The port quassel-core listens for connections on. 10113 Optional Ident Port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS=--config-from-environment Custom CLI options for Quassel Volume Mappings ( -v ) Volume Function /config Database and quassel-core configuration storage. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it quassel-core /bin/bash To monitor the logs of the container in realtime: docker logs -f quassel-core Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-core Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-core:latest Versions 03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14. 07.08.21: - Fixing incorrect database password variable operator. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 20.03.19: - Make stateless operation an option, with input from one of the quassel team. 26.01.19: - Add pipeline logic and multi arch. 08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel 0.13.0 See here. . 30.07.18: - Rebase to alpine:3.8 and use buildstage. 03.01.18: - Deprecate cpu_core routine lack of scaling. 09.12.17: - Rebase to alpine:3.7. 26.11.17: - Use cpu core counting routine to speed up build time. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 27.05.17: - Rebase to alpine:3.6. 13.05.17: - Switch to git source. 28.12.16: - Rebase to alpine:3.5. 23.11.16: - Rebase to alpine:edge. 23.09.16: - Use QT5 dependencies (thanks bauerj). 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 10.08.16: - Rebase to xenial. 14.10.15: - Removed the webui, turned out to be to unstable for most usecases. 01.09.15: - Fixed mistake in README. 30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface. 06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.","title":"quassel-core"},{"location":"images/docker-quassel-core/#linuxserverquassel-core","text":"Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time.","title":"linuxserver/quassel-core"},{"location":"images/docker-quassel-core/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-quassel-core/#application-setup","text":"Quassel wiki: quassel A great place to host a quassel instance is a VPS, such as DigitalOcean . For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim). Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your docker run command default: 4242 . Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect . You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io . That's it, you're done.","title":"Application Setup"},{"location":"images/docker-quassel-core/#stateless-usage","text":"To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting. Env Usage DB_BACKEND SQLite or PostgreSQL DB_PGSQL_USERNAME PostgreSQL User DB_PGSQL_PASSWORD PostgreSQL Password DB_PGSQL_HOSTNAME PostgreSQL Host DB_PGSQL_PORT PostgreSQL Port AUTH_AUTHENTICATOR Database or LDAP AUTH_LDAP_HOSTNAME LDAP Host AUTH_LDAP_PORT LDAP Port AUTH_LDAP_BIND_DN LDAP Bind Domain AUTH_LDAP_BIND_PASSWORD LDAP Password AUTH_LDAP_FILTER LDAP Authentication Filters AUTH_LDAP_UID_ATTRIBUTE LDAP UID Additionally you have RUN_OPTS that can be used to customize pathing and behvior. Option Example --strict-ident strictly bool --strict-ident --ident-daemon strictly bool --ident-daemon --ident-port --ident-port \"10113\" --ident-listen --ident-listen \"::,0.0.0.0\" --ssl-cert --ssl-cert /config/keys/cert.crt --ssl-key --ssl-key /config/keys/cert.key --require-ssl strictly bool --require-ssl Minimal example with SQLite: docker create \\ --name=quassel-core \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -e RUN_OPTS='--config-from-environment' \\ -e DB_BACKEND=SQLite \\ -e AUTH_AUTHENTICATOR=Database \\ -p 4242:4242 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/quassel-core","title":"Stateless usage"},{"location":"images/docker-quassel-core/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-quassel-core/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : quassel-core : image : lscr.io/linuxserver/quassel-core:latest container_name : quassel-core environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS=--config-from-environment #optional volumes : - :/config ports : - 4242:4242 - 113:10113 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-quassel-core/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = quassel-core \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = --config-from-environment ` #optional` \\ -p 4242 :4242 \\ -p 113 :10113 ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/quassel-core:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-quassel-core/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-quassel-core/#ports-p","text":"Parameter Function 4242 The port quassel-core listens for connections on. 10113 Optional Ident Port","title":"Ports (-p)"},{"location":"images/docker-quassel-core/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS=--config-from-environment Custom CLI options for Quassel","title":"Environment Variables (-e)"},{"location":"images/docker-quassel-core/#volume-mappings-v","text":"Volume Function /config Database and quassel-core configuration storage.","title":"Volume Mappings (-v)"},{"location":"images/docker-quassel-core/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-quassel-core/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-quassel-core/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-quassel-core/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-quassel-core/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-quassel-core/#support-info","text":"Shell access whilst the container is running: docker exec -it quassel-core /bin/bash To monitor the logs of the container in realtime: docker logs -f quassel-core Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-core Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-core:latest","title":"Support Info"},{"location":"images/docker-quassel-core/#versions","text":"03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14. 07.08.21: - Fixing incorrect database password variable operator. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 20.03.19: - Make stateless operation an option, with input from one of the quassel team. 26.01.19: - Add pipeline logic and multi arch. 08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel 0.13.0 See here. . 30.07.18: - Rebase to alpine:3.8 and use buildstage. 03.01.18: - Deprecate cpu_core routine lack of scaling. 09.12.17: - Rebase to alpine:3.7. 26.11.17: - Use cpu core counting routine to speed up build time. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 27.05.17: - Rebase to alpine:3.6. 13.05.17: - Switch to git source. 28.12.16: - Rebase to alpine:3.5. 23.11.16: - Rebase to alpine:edge. 23.09.16: - Use QT5 dependencies (thanks bauerj). 10.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 10.08.16: - Rebase to xenial. 14.10.15: - Removed the webui, turned out to be to unstable for most usecases. 01.09.15: - Fixed mistake in README. 30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface. 06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.","title":"Versions"},{"location":"images/docker-quassel-web/","text":"linuxserver/quassel-web Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup By default this container webui will be available on https://$SERVER_IP:64443 . To setup this container you can either use the envrionment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at: /config/settings-user.js Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : quassel-web : image : lscr.io/linuxserver/quassel-web:latest container_name : quassel-web environment : - PUID=1000 - PGID=1000 - QUASSEL_CORE=192.168.1.10 - QUASSEL_PORT=4242 - URL_BASE=/quassel #optional volumes : - /path/to/data:/config ports : - 64443:64443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = quassel-web \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e QUASSEL_CORE = 192 .168.1.10 \\ -e QUASSEL_PORT = 4242 \\ -e URL_BASE = /quassel ` #optional` \\ -p 64443 :64443 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/quassel-web:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 64443 Quassel-web https webui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation QUASSEL_CORE=192.168.1.10 specify the URL or IP address of your Quassel Core instance QUASSEL_PORT=4242 specify the port of your Quassel Core instance URL_BASE=/quassel Specify a url-base in reverse proxy setups ie. /quassel Volume Mappings ( -v ) Volume Function /config this will store config on the docker host Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it quassel-web /bin/bash To monitor the logs of the container in realtime: docker logs -f quassel-web Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-web Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-web:latest Versions 12.02.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 18.05.19: - Reconfigure environmental variable setup. 28.04.19: - Initial Release.","title":"quassel-web"},{"location":"images/docker-quassel-web/#linuxserverquassel-web","text":"Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.","title":"linuxserver/quassel-web"},{"location":"images/docker-quassel-web/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-quassel-web/#application-setup","text":"By default this container webui will be available on https://$SERVER_IP:64443 . To setup this container you can either use the envrionment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at: /config/settings-user.js","title":"Application Setup"},{"location":"images/docker-quassel-web/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-quassel-web/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-quassel-web/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : quassel-web : image : lscr.io/linuxserver/quassel-web:latest container_name : quassel-web environment : - PUID=1000 - PGID=1000 - QUASSEL_CORE=192.168.1.10 - QUASSEL_PORT=4242 - URL_BASE=/quassel #optional volumes : - /path/to/data:/config ports : - 64443:64443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-quassel-web/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = quassel-web \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e QUASSEL_CORE = 192 .168.1.10 \\ -e QUASSEL_PORT = 4242 \\ -e URL_BASE = /quassel ` #optional` \\ -p 64443 :64443 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/quassel-web:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-quassel-web/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-quassel-web/#ports-p","text":"Parameter Function 64443 Quassel-web https webui","title":"Ports (-p)"},{"location":"images/docker-quassel-web/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation QUASSEL_CORE=192.168.1.10 specify the URL or IP address of your Quassel Core instance QUASSEL_PORT=4242 specify the port of your Quassel Core instance URL_BASE=/quassel Specify a url-base in reverse proxy setups ie. /quassel","title":"Environment Variables (-e)"},{"location":"images/docker-quassel-web/#volume-mappings-v","text":"Volume Function /config this will store config on the docker host","title":"Volume Mappings (-v)"},{"location":"images/docker-quassel-web/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-quassel-web/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-quassel-web/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-quassel-web/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-quassel-web/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-quassel-web/#support-info","text":"Shell access whilst the container is running: docker exec -it quassel-web /bin/bash To monitor the logs of the container in realtime: docker logs -f quassel-web Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-web Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-web:latest","title":"Support Info"},{"location":"images/docker-quassel-web/#versions","text":"12.02.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 18.05.19: - Reconfigure environmental variable setup. 28.04.19: - Initial Release.","title":"Versions"},{"location":"images/docker-radarr/","text":"linuxserver/radarr Radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Radarr releases develop \u2705 Radarr releases from their develop branch nightly \u2705 Radarr releases from their nightly branch Application Setup Access the webui at :7878 , for more information check out Radarr . Media folders We have set /movies and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : radarr : image : lscr.io/linuxserver/radarr:latest container_name : radarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/movies:/movies #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 7878:7878 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = radarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 7878 :7878 \\ -v /path/to/data:/config \\ -v /path/to/movies:/movies ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/radarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 7878 The port for the Radarr webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Radarr Volume Mappings ( -v ) Volume Function /config Database and Radarr configs /movies Location of Movie library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it radarr /bin/bash To monitor the logs of the container in realtime: docker logs -f radarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' radarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/radarr:latest Versions 06.06.22: - Rebase master branch to Alpine 3.15. 20.02.22: - Rebase develop branch to Alpine. 04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch. 27.12.21: - Add nightly-alpine branch. 17.10.21: - Remove UMASK_SET . 08.05.21: - Make the paths clearer to the user 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 11.30.20: - Publish develop tag. 11.28.20: - Switch to v3 .NET CORE builds (no more mono, 5.14 tag is deprecated). Rebase to Focal (for issues on arm32v7, see here ). 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 10.05.19: - Rebase to Bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 09.09.18: - Add pipeline build process. 24.02.18: - Add nightly branch. 06.02.18: - Radarr repo changed owner. 15.12.17: - Fix continuation lines. 17.04.17: - Switch to using inhouse mono baseimage, adds python also. 13.04.17: - Switch to official mono repository. 10.01.17: - Initial Release.","title":"radarr"},{"location":"images/docker-radarr/#linuxserverradarr","text":"Radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato.","title":"linuxserver/radarr"},{"location":"images/docker-radarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-radarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Radarr releases develop \u2705 Radarr releases from their develop branch nightly \u2705 Radarr releases from their nightly branch","title":"Version Tags"},{"location":"images/docker-radarr/#application-setup","text":"Access the webui at :7878 , for more information check out Radarr .","title":"Application Setup"},{"location":"images/docker-radarr/#media-folders","text":"We have set /movies and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-radarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-radarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : radarr : image : lscr.io/linuxserver/radarr:latest container_name : radarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/movies:/movies #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 7878:7878 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-radarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = radarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 7878 :7878 \\ -v /path/to/data:/config \\ -v /path/to/movies:/movies ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/radarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-radarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-radarr/#ports-p","text":"Parameter Function 7878 The port for the Radarr webinterface","title":"Ports (-p)"},{"location":"images/docker-radarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Radarr","title":"Environment Variables (-e)"},{"location":"images/docker-radarr/#volume-mappings-v","text":"Volume Function /config Database and Radarr configs /movies Location of Movie library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)","title":"Volume Mappings (-v)"},{"location":"images/docker-radarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-radarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-radarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-radarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-radarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-radarr/#support-info","text":"Shell access whilst the container is running: docker exec -it radarr /bin/bash To monitor the logs of the container in realtime: docker logs -f radarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' radarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/radarr:latest","title":"Support Info"},{"location":"images/docker-radarr/#versions","text":"06.06.22: - Rebase master branch to Alpine 3.15. 20.02.22: - Rebase develop branch to Alpine. 04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch. 27.12.21: - Add nightly-alpine branch. 17.10.21: - Remove UMASK_SET . 08.05.21: - Make the paths clearer to the user 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 11.30.20: - Publish develop tag. 11.28.20: - Switch to v3 .NET CORE builds (no more mono, 5.14 tag is deprecated). Rebase to Focal (for issues on arm32v7, see here ). 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 10.05.19: - Rebase to Bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 09.09.18: - Add pipeline build process. 24.02.18: - Add nightly branch. 06.02.18: - Radarr repo changed owner. 15.12.17: - Fix continuation lines. 17.04.17: - Switch to using inhouse mono baseimage, adds python also. 13.04.17: - Switch to official mono repository. 10.01.17: - Initial Release.","title":"Versions"},{"location":"images/docker-raneto/","text":"linuxserver/raneto Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at http:// :3000 The default username and password is admin/password This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application: /config/config.default.js - Main configuration file to setup your user, site name, etc. /config/content - All of your Markdown files go here more info . /config/images - This folder will serve content on http:// :3000/images/ .png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : raneto : image : lscr.io/linuxserver/raneto:latest container_name : raneto environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = raneto \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/raneto:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 The port for the Raneto web interface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Raneto config and Markdown files Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it raneto /bin/bash To monitor the logs of the container in realtime: docker logs -f raneto Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' raneto Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/raneto:latest Versions 10.08.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.11. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 01.06.19: - Initial Release.","title":"raneto"},{"location":"images/docker-raneto/#linuxserverraneto","text":"Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.","title":"linuxserver/raneto"},{"location":"images/docker-raneto/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-raneto/#application-setup","text":"Access the webui at http:// :3000 The default username and password is admin/password This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application: /config/config.default.js - Main configuration file to setup your user, site name, etc. /config/content - All of your Markdown files go here more info . /config/images - This folder will serve content on http:// :3000/images/ .png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting.","title":"Application Setup"},{"location":"images/docker-raneto/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-raneto/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : raneto : image : lscr.io/linuxserver/raneto:latest container_name : raneto environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-raneto/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = raneto \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/appdata:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/raneto:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-raneto/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-raneto/#ports-p","text":"Parameter Function 3000 The port for the Raneto web interface","title":"Ports (-p)"},{"location":"images/docker-raneto/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-raneto/#volume-mappings-v","text":"Volume Function /config Raneto config and Markdown files","title":"Volume Mappings (-v)"},{"location":"images/docker-raneto/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-raneto/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-raneto/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-raneto/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-raneto/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-raneto/#support-info","text":"Shell access whilst the container is running: docker exec -it raneto /bin/bash To monitor the logs of the container in realtime: docker logs -f raneto Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' raneto Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/raneto:latest","title":"Support Info"},{"location":"images/docker-raneto/#versions","text":"10.08.22: - Rebasing to alpine 3.15. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.11. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 01.06.19: - Initial Release.","title":"Versions"},{"location":"images/docker-rdesktop/","text":"linuxserver/rdesktop Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rdesktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch Application Setup The Default USERNAME and PASSWORD is: abc/abc Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program You will need a Remote Desktop client to access this container Wikipedia List , by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389 . The first thing you should do when you login to the container is to change the abc users password by issuing the passwd command. Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them If you ever lose your password you can always reset it by execing into the container as root: docker exec -it rdesktop passwd abc By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet. Hardware Acceleration (Ubuntu Container Only) Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container. Intel/ATI/AMD To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container. Arm Devices Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : rdesktop : image : lscr.io/linuxserver/rdesktop:latest container_name : rdesktop security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /var/run/docker.sock:/var/run/docker.sock #optional - /path/to/data:/config #optional ports : - 3389:3389 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = rdesktop \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3389 :3389 \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ -v /path/to/data:/config ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/rdesktop:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3389 RDP access port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container /config abc users home directory Device Mappings ( --device ) Parameter Function /dev/dri Add this for GL support (Linux hosts only) Miscellaneous Options Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it rdesktop /bin/bash To monitor the logs of the container in realtime: docker logs -f rdesktop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rdesktop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rdesktop:latest Versions 27.10.22: - Rebase all Ubuntu images to Jammy 22.04. 26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3. 05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel. 05.05.21: - Reduce default packages to their flavor specific basics. 05.04.21: - Add Alpine flavor. 06.04.20: - Start PulseAudio in images to support audio 28.02.20: - Initial Releases","title":"rdesktop"},{"location":"images/docker-rdesktop/#linuxserverrdesktop","text":"Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.","title":"linuxserver/rdesktop"},{"location":"images/docker-rdesktop/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rdesktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-rdesktop/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch","title":"Version Tags"},{"location":"images/docker-rdesktop/#application-setup","text":"The Default USERNAME and PASSWORD is: abc/abc Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program You will need a Remote Desktop client to access this container Wikipedia List , by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389 . The first thing you should do when you login to the container is to change the abc users password by issuing the passwd command. Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them If you ever lose your password you can always reset it by execing into the container as root: docker exec -it rdesktop passwd abc By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.","title":"Application Setup"},{"location":"images/docker-rdesktop/#hardware-acceleration-ubuntu-container-only","text":"Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.","title":"Hardware Acceleration (Ubuntu Container Only)"},{"location":"images/docker-rdesktop/#intelatiamd","text":"To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel/ATI/AMD"},{"location":"images/docker-rdesktop/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.","title":"Nvidia"},{"location":"images/docker-rdesktop/#arm-devices","text":"Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.","title":"Arm Devices"},{"location":"images/docker-rdesktop/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-rdesktop/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : rdesktop : image : lscr.io/linuxserver/rdesktop:latest container_name : rdesktop security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /var/run/docker.sock:/var/run/docker.sock #optional - /path/to/data:/config #optional ports : - 3389:3389 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-rdesktop/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = rdesktop \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3389 :3389 \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ -v /path/to/data:/config ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/rdesktop:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-rdesktop/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-rdesktop/#ports-p","text":"Parameter Function 3389 RDP access port","title":"Ports (-p)"},{"location":"images/docker-rdesktop/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-rdesktop/#volume-mappings-v","text":"Volume Function /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container /config abc users home directory","title":"Volume Mappings (-v)"},{"location":"images/docker-rdesktop/#device-mappings-device","text":"Parameter Function /dev/dri Add this for GL support (Linux hosts only)","title":"Device Mappings (--device)"},{"location":"images/docker-rdesktop/#miscellaneous-options","text":"Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker","title":"Miscellaneous Options"},{"location":"images/docker-rdesktop/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-rdesktop/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-rdesktop/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-rdesktop/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-rdesktop/#support-info","text":"Shell access whilst the container is running: docker exec -it rdesktop /bin/bash To monitor the logs of the container in realtime: docker logs -f rdesktop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rdesktop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rdesktop:latest","title":"Support Info"},{"location":"images/docker-rdesktop/#versions","text":"27.10.22: - Rebase all Ubuntu images to Jammy 22.04. 26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3. 05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel. 05.05.21: - Reduce default packages to their flavor specific basics. 05.04.21: - Add Alpine flavor. 06.04.20: - Start PulseAudio in images to support audio 28.02.20: - Initial Releases","title":"Versions"},{"location":"images/docker-readarr/","text":"linuxserver/readarr Readarr - Book Manager and Automation (Sonarr for Ebooks) Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/readarr:nightly should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u274c nightly \u2705 Nightly Readarr releases Application Setup Access the webui at :8787 , for more information check out Readarr . Media folders We have set /books and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : readarr : image : lscr.io/linuxserver/readarr:nightly container_name : readarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/books:/books #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 8787:8787 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = readarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8787 :8787 \\ -v /path/to/data:/config \\ -v /path/to/books:/books ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/readarr:nightly Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8787 The port for the Readarr webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Readarr Volume Mappings ( -v ) Volume Function /config Database and Readarr configs /books Location of Book library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it readarr /bin/bash To monitor the logs of the container in realtime: docker logs -f readarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' readarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/readarr:nightly Versions 21.01.22: - Remove chromaprint as it's no longer a required dependency. 01.01.22: - Add chromaprint for audio fingerprinting. 28.07.21: - Initial Release.","title":"readarr"},{"location":"images/docker-readarr/#linuxserverreadarr","text":"Readarr - Book Manager and Automation (Sonarr for Ebooks)","title":"linuxserver/readarr"},{"location":"images/docker-readarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/readarr:nightly should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-readarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u274c nightly \u2705 Nightly Readarr releases","title":"Version Tags"},{"location":"images/docker-readarr/#application-setup","text":"Access the webui at :8787 , for more information check out Readarr .","title":"Application Setup"},{"location":"images/docker-readarr/#media-folders","text":"We have set /books and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-readarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-readarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : readarr : image : lscr.io/linuxserver/readarr:nightly container_name : readarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/books:/books #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 8787:8787 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-readarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = readarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8787 :8787 \\ -v /path/to/data:/config \\ -v /path/to/books:/books ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/readarr:nightly","title":"docker cli (click here for more info)"},{"location":"images/docker-readarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-readarr/#ports-p","text":"Parameter Function 8787 The port for the Readarr webinterface","title":"Ports (-p)"},{"location":"images/docker-readarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Readarr","title":"Environment Variables (-e)"},{"location":"images/docker-readarr/#volume-mappings-v","text":"Volume Function /config Database and Readarr configs /books Location of Book library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)","title":"Volume Mappings (-v)"},{"location":"images/docker-readarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-readarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-readarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-readarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-readarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-readarr/#support-info","text":"Shell access whilst the container is running: docker exec -it readarr /bin/bash To monitor the logs of the container in realtime: docker logs -f readarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' readarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/readarr:nightly","title":"Support Info"},{"location":"images/docker-readarr/#versions","text":"21.01.22: - Remove chromaprint as it's no longer a required dependency. 01.01.22: - Add chromaprint for audio fingerprinting. 28.07.21: - Initial Release.","title":"Versions"},{"location":"images/docker-readme-sync/","text":"Contact information:- Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast The LinuxServer.io team brings you another image release featuring :- regular and timely application updates easy user mappings custom base image with s6 overlay weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth security updates lsiodev/readme-sync Utility to copy README.md from a given github.com repository to a given dockerhub.com repository. Usage docker run --rm=true \\ -e DOCKERHUB_USERNAME= \\ -e DOCKERHUB_PASSWORD= \\ -e GIT_REPOSITORY= \\ -e DOCKER_REPOSITORY= \\ -e GIT_BRANCH= \\ lsiodev/readme-sync bash -c 'node sync' Parameters The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80. Parameter Function -e DOCKERHUB_USERNAME your dockerhub username -e DOCKERHUB_PASSWORD your dockerhub password -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync -e GIT_BRANCH github repository branch, optional (default: master) It is based on alpine and is not meant to run as a service. The sync is performed and the command exits. Versions Date Changes 13.01.21 Use ghcr baseimages. Fall back to external folder for readme lite. 28.07.20 Rebase to alpine 3.12. 20.08.18 Rebase to alpine 3.8. 28.02.18 convert repo to use node.js implementation. 17.11.17 add github branch support. 16.10.16 merge ruby app. 11.10.16 Initial development release.","title":"readme-sync"},{"location":"images/docker-readme-sync/#contact-information-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast The LinuxServer.io team brings you another image release featuring :- regular and timely application updates easy user mappings custom base image with s6 overlay weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth security updates","title":"Contact information:-"},{"location":"images/docker-readme-sync/#lsiodevreadme-sync","text":"Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.","title":"lsiodev/readme-sync"},{"location":"images/docker-readme-sync/#usage","text":"docker run --rm=true \\ -e DOCKERHUB_USERNAME= \\ -e DOCKERHUB_PASSWORD= \\ -e GIT_REPOSITORY= \\ -e DOCKER_REPOSITORY= \\ -e GIT_BRANCH= \\ lsiodev/readme-sync bash -c 'node sync'","title":"Usage"},{"location":"images/docker-readme-sync/#parameters","text":"The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80. Parameter Function -e DOCKERHUB_USERNAME your dockerhub username -e DOCKERHUB_PASSWORD your dockerhub password -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync -e GIT_BRANCH github repository branch, optional (default: master) It is based on alpine and is not meant to run as a service. The sync is performed and the command exits.","title":"Parameters"},{"location":"images/docker-readme-sync/#versions","text":"Date Changes 13.01.21 Use ghcr baseimages. Fall back to external folder for readme lite. 28.07.20 Rebase to alpine 3.12. 20.08.18 Rebase to alpine 3.8. 28.02.18 convert repo to use node.js implementation. 17.11.17 add github branch support. 16.10.16 merge ruby app. 11.10.16 Initial development release.","title":"Versions"},{"location":"images/docker-remmina/","text":"linuxserver/remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/remmina:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : remmina : image : lscr.io/linuxserver/remmina:latest container_name : remmina environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = remmina \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/remmina:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Remmina desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it remmina /bin/bash To monitor the logs of the container in realtime: docker logs -f remmina Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' remmina Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/remmina:latest Versions 16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins. 19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages. 27.03.20: - Initial release.","title":"remmina"},{"location":"images/docker-remmina/#linuxserverremmina","text":"Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.","title":"linuxserver/remmina"},{"location":"images/docker-remmina/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/remmina:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-remmina/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true","title":"Application Setup"},{"location":"images/docker-remmina/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-remmina/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : remmina : image : lscr.io/linuxserver/remmina:latest container_name : remmina environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-remmina/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = remmina \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/remmina:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-remmina/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-remmina/#ports-p","text":"Parameter Function 3000 Remmina desktop gui.","title":"Ports (-p)"},{"location":"images/docker-remmina/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-remmina/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings.","title":"Volume Mappings (-v)"},{"location":"images/docker-remmina/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-remmina/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-remmina/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-remmina/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-remmina/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-remmina/#support-info","text":"Shell access whilst the container is running: docker exec -it remmina /bin/bash To monitor the logs of the container in realtime: docker logs -f remmina Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' remmina Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/remmina:latest","title":"Support Info"},{"location":"images/docker-remmina/#versions","text":"16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins. 19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages. 27.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-requestrr/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development. linuxserver/requestrr Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at :4545 , for more information check out Requestrr . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : requestrr : image : lscr.io/linuxserver/requestrr:latest container_name : requestrr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 4545:4545 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = requestrr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 4545 :4545 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/requestrr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 4545 web gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it requestrr /bin/bash To monitor the logs of the container in realtime: docker logs -f requestrr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' requestrr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/requestrr:latest Versions 20.12.21: - Deprecate. 27.09.21: - Allow app to write to tmp folder. 21.02.21: - Initial Release.","title":"requestrr"},{"location":"images/docker-requestrr/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.","title":"DEPRECATION NOTICE"},{"location":"images/docker-requestrr/#linuxserverrequestrr","text":"Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.","title":"linuxserver/requestrr"},{"location":"images/docker-requestrr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-requestrr/#application-setup","text":"Access the webui at :4545 , for more information check out Requestrr .","title":"Application Setup"},{"location":"images/docker-requestrr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-requestrr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : requestrr : image : lscr.io/linuxserver/requestrr:latest container_name : requestrr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config ports : - 4545:4545 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-requestrr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = requestrr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 4545 :4545 \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/requestrr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-requestrr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-requestrr/#ports-p","text":"Parameter Function 4545 web gui","title":"Ports (-p)"},{"location":"images/docker-requestrr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-requestrr/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-requestrr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-requestrr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-requestrr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-requestrr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-requestrr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-requestrr/#support-info","text":"Shell access whilst the container is running: docker exec -it requestrr /bin/bash To monitor the logs of the container in realtime: docker logs -f requestrr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' requestrr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/requestrr:latest","title":"Support Info"},{"location":"images/docker-requestrr/#versions","text":"20.12.21: - Deprecate. 27.09.21: - Allow app to write to tmp folder. 21.02.21: - Initial Release.","title":"Versions"},{"location":"images/docker-resilio-sync/","text":"linuxserver/resilio-sync Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/resilio-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Webui is at :8888 , for account creation and configuration. More info on setup at Resilio Sync Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : resilio-sync : image : lscr.io/linuxserver/resilio-sync:latest container_name : resilio-sync environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/downloads:/downloads - /path/to/data:/sync ports : - 8888:8888 - 55555:55555 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = resilio-sync \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8888 :8888 \\ -p 55555 :55555 \\ -v /path/to/config:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/data:/sync \\ --restart unless-stopped \\ lscr.io/linuxserver/resilio-sync:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8888 WebUI 55555 Sync Port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where resilio-sync should store its config file. /downloads Folder for downloads/cache. /sync Sync folders root. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it resilio-sync /bin/bash To monitor the logs of the container in realtime: docker logs -f resilio-sync Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' resilio-sync Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/resilio-sync:latest Versions 14.12.22: - Rebase to Jammy, migrate to s6v3. 03.10.21: - Use upstream apt repo to install. Rebase to focal. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Rebase to bionic, add pipeline logic and multi arch. 05.02.18: - Add downloads volume mount. 28.01.18: - Add /sync to dir whitelist. 26.01.18: - Use variable for arch to bring in line with armhf arch repo. 15.12.17: - Fix continuation lines. 02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio. 22.05.17: - Add variable for user defined umask. 14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine). 08.02.17: - Rebase to alpine 3.5. 02.11.16: - Initial Release.","title":"resilio-sync"},{"location":"images/docker-resilio-sync/#linuxserverresilio-sync","text":"Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.","title":"linuxserver/resilio-sync"},{"location":"images/docker-resilio-sync/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/resilio-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-resilio-sync/#application-setup","text":"Webui is at :8888 , for account creation and configuration. More info on setup at Resilio Sync","title":"Application Setup"},{"location":"images/docker-resilio-sync/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-resilio-sync/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : resilio-sync : image : lscr.io/linuxserver/resilio-sync:latest container_name : resilio-sync environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/downloads:/downloads - /path/to/data:/sync ports : - 8888:8888 - 55555:55555 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-resilio-sync/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = resilio-sync \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8888 :8888 \\ -p 55555 :55555 \\ -v /path/to/config:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/data:/sync \\ --restart unless-stopped \\ lscr.io/linuxserver/resilio-sync:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-resilio-sync/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-resilio-sync/#ports-p","text":"Parameter Function 8888 WebUI 55555 Sync Port.","title":"Ports (-p)"},{"location":"images/docker-resilio-sync/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-resilio-sync/#volume-mappings-v","text":"Volume Function /config Where resilio-sync should store its config file. /downloads Folder for downloads/cache. /sync Sync folders root.","title":"Volume Mappings (-v)"},{"location":"images/docker-resilio-sync/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-resilio-sync/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-resilio-sync/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-resilio-sync/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-resilio-sync/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-resilio-sync/#support-info","text":"Shell access whilst the container is running: docker exec -it resilio-sync /bin/bash To monitor the logs of the container in realtime: docker logs -f resilio-sync Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' resilio-sync Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/resilio-sync:latest","title":"Support Info"},{"location":"images/docker-resilio-sync/#versions","text":"14.12.22: - Rebase to Jammy, migrate to s6v3. 03.10.21: - Use upstream apt repo to install. Rebase to focal. 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 11.02.19: - Rebase to bionic, add pipeline logic and multi arch. 05.02.18: - Add downloads volume mount. 28.01.18: - Add /sync to dir whitelist. 26.01.18: - Use variable for arch to bring in line with armhf arch repo. 15.12.17: - Fix continuation lines. 02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio. 22.05.17: - Add variable for user defined umask. 14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine). 08.02.17: - Rebase to alpine 3.5. 02.11.16: - Initial Release.","title":"Versions"},{"location":"images/docker-rsnapshot/","text":"linuxserver/rsnapshot Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\" Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rsnapshot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup IMPORTANT NOTES: After starting the container you will need to edit /config/rsnapshot.conf . SNAPSHOT ROOT DIRECTORY rsnapshot is configured to backup data to the /.snapshots volume by default. This can be changed in the config, but be sure you mount a volume to the container to match. BACKUP LEVELS / INTERVALS rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information. BACKUP POINTS rsnapshot is configured to backup data from the /data volume by default. This can be changed in the config, but be sure you mount a volume to the container to match. cron You will then need to edit /config/crontabs/root to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : rsnapshot : image : lscr.io/linuxserver/rsnapshot:latest container_name : rsnapshot environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata:/config - /path/to/snapshots:/.snapshots #optional - /path/to/data:/data #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = rsnapshot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -v /path/to/appdata:/config \\ -v /path/to/snapshots:/.snapshots ` #optional` \\ -v /path/to/data:/data ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/rsnapshot:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /.snapshots Storage location for all snapshots. /data Storage location for data to be backed up. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it rsnapshot /bin/bash To monitor the logs of the container in realtime: docker logs -f rsnapshot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rsnapshot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rsnapshot:latest Versions 15.12.22: - Rebase to alpine 3.17. 11.10.22: - Rebase to alpine 3.16, migrate to s6v3. 10.10.21: - Rebase to alpine 3.14. 20.08.20: - Initial Release.","title":"rsnapshot"},{"location":"images/docker-rsnapshot/#linuxserverrsnapshot","text":"Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\"","title":"linuxserver/rsnapshot"},{"location":"images/docker-rsnapshot/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rsnapshot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-rsnapshot/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-rsnapshot/#important-notes","text":"After starting the container you will need to edit /config/rsnapshot.conf .","title":"IMPORTANT NOTES:"},{"location":"images/docker-rsnapshot/#snapshot-root-directory","text":"rsnapshot is configured to backup data to the /.snapshots volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.","title":"SNAPSHOT ROOT DIRECTORY"},{"location":"images/docker-rsnapshot/#backup-levels-intervals","text":"rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.","title":"BACKUP LEVELS / INTERVALS"},{"location":"images/docker-rsnapshot/#backup-points","text":"rsnapshot is configured to backup data from the /data volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.","title":"BACKUP POINTS"},{"location":"images/docker-rsnapshot/#cron","text":"You will then need to edit /config/crontabs/root to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme .","title":"cron"},{"location":"images/docker-rsnapshot/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-rsnapshot/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : rsnapshot : image : lscr.io/linuxserver/rsnapshot:latest container_name : rsnapshot environment : - PUID=1000 - PGID=1000 - TZ=America/New_York volumes : - /path/to/appdata:/config - /path/to/snapshots:/.snapshots #optional - /path/to/data:/data #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-rsnapshot/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = rsnapshot \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = America/New_York \\ -v /path/to/appdata:/config \\ -v /path/to/snapshots:/.snapshots ` #optional` \\ -v /path/to/data:/data ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/rsnapshot:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-rsnapshot/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-rsnapshot/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-rsnapshot/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York","title":"Environment Variables (-e)"},{"location":"images/docker-rsnapshot/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /.snapshots Storage location for all snapshots. /data Storage location for data to be backed up.","title":"Volume Mappings (-v)"},{"location":"images/docker-rsnapshot/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-rsnapshot/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-rsnapshot/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-rsnapshot/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-rsnapshot/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-rsnapshot/#support-info","text":"Shell access whilst the container is running: docker exec -it rsnapshot /bin/bash To monitor the logs of the container in realtime: docker logs -f rsnapshot Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rsnapshot Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rsnapshot:latest","title":"Support Info"},{"location":"images/docker-rsnapshot/#versions","text":"15.12.22: - Rebase to alpine 3.17. 11.10.22: - Rebase to alpine 3.16, migrate to s6v3. 10.10.21: - Rebase to alpine 3.14. 20.08.20: - Initial Release.","title":"Versions"},{"location":"images/docker-rutorrent/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. linuxserver/rutorrent Rutorrent is a popular rtorrent client with a webui for ease of use. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker-compose ( recommended ) Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : rutorrent : image : lscr.io/linuxserver/rutorrent container_name : rutorrent environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/downloads ports : - 80:80 - 5000:5000 - 51413:51413 - 6881:6881/udp restart : unless-stopped docker cli docker run -d \\ --name=rutorrent \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 80:80 \\ -p 5000:5000 \\ -p 51413:51413 \\ -p 6881:6881/udp \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/rutorrent Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 ruTorrent Web UI 5000 scgi port 51413 Bit-torrent port 6881/udp Bit-torrent port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation Volume Mappings ( -v ) Volume Function /config where ruTorrent should store it's config files /downloads path to your downloads folder Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup THIS IMAGE IS DEPRECATED. Please migrate to crazy-max's image . Webui can be found at :80 , configuration files for rtorrent are in /config/rtorrent, php in config/php and for the webui in /config/rutorrent/settings. Settings, changed by the user through the \"Settings\" panel in ruTorrent, are valid until rtorrent restart. After which all settings will be set according to the rtorrent config file (/config/rtorrent/rtorrent.rc),this is a limitation of the actual apps themselves. ** Important note for unraid users or those running services such as a webserver on port 80, change port 80 assignment ** ** It should also be noted that this container when run will create subfolders ,completed, incoming and watched in the /downloads volume.** ** The Port Assignments and configuration folder structure has been changed from the previous ubuntu based versions of this container and we recommend a clean install ** Umask can be set in the /config/rtorrent/rtorrent.rc file by changing value in system.umask.set If you are seeing this error Caught internal_error: 'DhtRouter::get_tracker did not actually insert tracker.'. , a possible fix is to disable dht in /config/rtorrent/rtorrent.rc by changing the following values. dht.mode.set = disable protocol.pex.set = no If after updating you see an error about connecting to rtorrent in the webui, remove or comment out these lines in /config/rtorrent/rtorrent.rc ,whatever value is set, yes or no. Just setting them to no will still cause the error.. trackers.use_udp.set = yes protocol.pex.set = no To add plugins, create a plugins folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it rutorrent /bin/bash To monitor the logs of the container in realtime: docker logs -f rutorrent Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rutorrent Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rutorrent Versions 25.03.22: - Deprecated. Please migrate to crazy-max's image . 02.06.20: - Rebasing to alpine 3.12. 29.02.20: - Update readme for pex/dht. 28.06.19: - Rebasing to alpine 3.10. 20.05.19: - Shift to building from official releases instead of commits. 13.05.19: - Add libffi and openssl. 07.05.19: - Add cloudscraper pip package. 11.04.19: - Fix warnings in webui by adding python3, procps and pip packages. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 03.11.18: - Add pipeline and multi arch logic to repo. 27.08.18: - Add bind tools package. 22.08.18: - Rebase to alpine 3.8. 08.12.17: - Rebase to alpine 3.7, add sox package. 28.10.17: - Mediainfo moved from testing to community repo. 09.10.17: - Use repo version of mediainfo to shorten build time. 28.05.17: - Fix permissions on secondary temp folder of nginx. 26.05.17: - Rebase to alpine 3.6. 03.05.17: - Fix log permissions. 18.03.17: - Note in readme about disabling dht in some circumstances. 24.02.17: - Patch a source file to quash rss https bug. 29.01.17: - Rebase to alpine 3.5. 20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90. 14.10.16: - Add version layer information. 04.10.16: - Remove redundant sessions folder. 30.09.16: - Fix umask. 21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README, bump mediainfo version to 0.7.87. 07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php. 26.07.16: - Rebase to alpine. 08.03.16: - Initial Release.","title":"rutorrent"},{"location":"images/docker-rutorrent/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated.","title":"DEPRECATION NOTICE"},{"location":"images/docker-rutorrent/#linuxserverrutorrent","text":"Rutorrent is a popular rtorrent client with a webui for ease of use.","title":"linuxserver/rutorrent"},{"location":"images/docker-rutorrent/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-rutorrent/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-rutorrent/#docker-compose-recommended","text":"Compatible with docker-compose v2 schemas. --- version : \"2.1\" services : rutorrent : image : lscr.io/linuxserver/rutorrent container_name : rutorrent environment : - PUID=1000 - PGID=1000 volumes : - :/config - :/downloads ports : - 80:80 - 5000:5000 - 51413:51413 - 6881:6881/udp restart : unless-stopped","title":"docker-compose (recommended)"},{"location":"images/docker-rutorrent/#docker-cli","text":"docker run -d \\ --name=rutorrent \\ -e PUID=1000 \\ -e PGID=1000 \\ -p 80:80 \\ -p 5000:5000 \\ -p 51413:51413 \\ -p 6881:6881/udp \\ -v :/config \\ -v :/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/rutorrent","title":"docker cli"},{"location":"images/docker-rutorrent/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-rutorrent/#ports-p","text":"Parameter Function 80 ruTorrent Web UI 5000 scgi port 51413 Bit-torrent port 6881/udp Bit-torrent port","title":"Ports (-p)"},{"location":"images/docker-rutorrent/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation","title":"Environment Variables (-e)"},{"location":"images/docker-rutorrent/#volume-mappings-v","text":"Volume Function /config where ruTorrent should store it's config files /downloads path to your downloads folder","title":"Volume Mappings (-v)"},{"location":"images/docker-rutorrent/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD=/run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-rutorrent/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-rutorrent/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-rutorrent/#application-setup","text":"THIS IMAGE IS DEPRECATED. Please migrate to crazy-max's image . Webui can be found at :80 , configuration files for rtorrent are in /config/rtorrent, php in config/php and for the webui in /config/rutorrent/settings. Settings, changed by the user through the \"Settings\" panel in ruTorrent, are valid until rtorrent restart. After which all settings will be set according to the rtorrent config file (/config/rtorrent/rtorrent.rc),this is a limitation of the actual apps themselves. ** Important note for unraid users or those running services such as a webserver on port 80, change port 80 assignment ** ** It should also be noted that this container when run will create subfolders ,completed, incoming and watched in the /downloads volume.** ** The Port Assignments and configuration folder structure has been changed from the previous ubuntu based versions of this container and we recommend a clean install ** Umask can be set in the /config/rtorrent/rtorrent.rc file by changing value in system.umask.set If you are seeing this error Caught internal_error: 'DhtRouter::get_tracker did not actually insert tracker.'. , a possible fix is to disable dht in /config/rtorrent/rtorrent.rc by changing the following values. dht.mode.set = disable protocol.pex.set = no If after updating you see an error about connecting to rtorrent in the webui, remove or comment out these lines in /config/rtorrent/rtorrent.rc ,whatever value is set, yes or no. Just setting them to no will still cause the error.. trackers.use_udp.set = yes protocol.pex.set = no To add plugins, create a plugins folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories.","title":"Application Setup"},{"location":"images/docker-rutorrent/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-rutorrent/#support-info","text":"Shell access whilst the container is running: docker exec -it rutorrent /bin/bash To monitor the logs of the container in realtime: docker logs -f rutorrent Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rutorrent Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rutorrent","title":"Support Info"},{"location":"images/docker-rutorrent/#versions","text":"25.03.22: - Deprecated. Please migrate to crazy-max's image . 02.06.20: - Rebasing to alpine 3.12. 29.02.20: - Update readme for pex/dht. 28.06.19: - Rebasing to alpine 3.10. 20.05.19: - Shift to building from official releases instead of commits. 13.05.19: - Add libffi and openssl. 07.05.19: - Add cloudscraper pip package. 11.04.19: - Fix warnings in webui by adding python3, procps and pip packages. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 03.11.18: - Add pipeline and multi arch logic to repo. 27.08.18: - Add bind tools package. 22.08.18: - Rebase to alpine 3.8. 08.12.17: - Rebase to alpine 3.7, add sox package. 28.10.17: - Mediainfo moved from testing to community repo. 09.10.17: - Use repo version of mediainfo to shorten build time. 28.05.17: - Fix permissions on secondary temp folder of nginx. 26.05.17: - Rebase to alpine 3.6. 03.05.17: - Fix log permissions. 18.03.17: - Note in readme about disabling dht in some circumstances. 24.02.17: - Patch a source file to quash rss https bug. 29.01.17: - Rebase to alpine 3.5. 20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90. 14.10.16: - Add version layer information. 04.10.16: - Remove redundant sessions folder. 30.09.16: - Fix umask. 21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README, bump mediainfo version to 0.7.87. 07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php. 26.07.16: - Rebase to alpine. 08.03.16: - Initial Release.","title":"Versions"},{"location":"images/docker-sabnzbd/","text":"linuxserver/sabnzbd Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sabnzbd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable SABnzbd releases unstable \u2705 Pre-releases from the develop branch nightly \u2705 Latest commits from the develop branch Application Setup Initial setup is done from the http port. See the SABnzbd wiki for more information. nzb-notify nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information. Download folders In Sabnzbd gui settings, under Folders , make sure to set the Completed Download Folder as /downloads and the Temporary Download Folder as /incomplete-downloads We have set /incomplete-downloads and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : sabnzbd : image : lscr.io/linuxserver/sabnzbd:latest container_name : sabnzbd environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/downloads:/downloads #optional - /path/to/incomplete/downloads:/incomplete-downloads #optional ports : - 8080:8080 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = sabnzbd \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads ` #optional` \\ -v /path/to/incomplete/downloads:/incomplete-downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/sabnzbd:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 HTTP port for the WebUI. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Local path for sabnzbd config files. /downloads Local path for finished downloads. /incomplete-downloads Local path for incomplete-downloads. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it sabnzbd /bin/bash To monitor the logs of the container in realtime: docker logs -f sabnzbd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sabnzbd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sabnzbd:latest Versions 03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 31.07.22: - Add nightly tag. 10.03.22: - Add nzb-notify. 22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch. 25.01.22: - Rebase Unstable branch to Alpine. 13.01.22: - Add alpine branch 08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080 24.07.21: - Add python3-setuptools. 14.05.21: - Use linuxserver.io wheel index for pip packages. 12.02.21: - Clean up rust/cargo and pip cache. 17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink python to python3 . 02.01.20: - Add python3 on top of python2 to image during transition. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 25.02.19: - Rebase to Bionic, add python deps for scripts. 26.01.19: - Add pipeline logic and multi arch. 13.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 10.04.17: - Bump to 2.0 Release. 25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch. 08.02.17: - Add pythonioenconding=utf8 as env. 15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme . 11.09.16: - Bump to release of 1.10. 09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab. 28.08.16: - Rebase to alpine, using git version of sab. 17.03.16: - Bump to install 1.0 final at startup. 14.03.16: - Refresh image to pick up latest RC. 23.01.15: - Refresh image. 14.12.15: - Refresh image to pick up latest beta. 21.08.15: - Initial Release.","title":"sabnzbd"},{"location":"images/docker-sabnzbd/#linuxserversabnzbd","text":"Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.","title":"linuxserver/sabnzbd"},{"location":"images/docker-sabnzbd/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sabnzbd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-sabnzbd/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable SABnzbd releases unstable \u2705 Pre-releases from the develop branch nightly \u2705 Latest commits from the develop branch","title":"Version Tags"},{"location":"images/docker-sabnzbd/#application-setup","text":"Initial setup is done from the http port. See the SABnzbd wiki for more information.","title":"Application Setup"},{"location":"images/docker-sabnzbd/#nzb-notify","text":"nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.","title":"nzb-notify"},{"location":"images/docker-sabnzbd/#download-folders","text":"In Sabnzbd gui settings, under Folders , make sure to set the Completed Download Folder as /downloads and the Temporary Download Folder as /incomplete-downloads We have set /incomplete-downloads and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Download folders"},{"location":"images/docker-sabnzbd/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-sabnzbd/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : sabnzbd : image : lscr.io/linuxserver/sabnzbd:latest container_name : sabnzbd environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/downloads:/downloads #optional - /path/to/incomplete/downloads:/incomplete-downloads #optional ports : - 8080:8080 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-sabnzbd/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = sabnzbd \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8080 :8080 \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads ` #optional` \\ -v /path/to/incomplete/downloads:/incomplete-downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/sabnzbd:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-sabnzbd/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sabnzbd/#ports-p","text":"Parameter Function 8080 HTTP port for the WebUI.","title":"Ports (-p)"},{"location":"images/docker-sabnzbd/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-sabnzbd/#volume-mappings-v","text":"Volume Function /config Local path for sabnzbd config files. /downloads Local path for finished downloads. /incomplete-downloads Local path for incomplete-downloads.","title":"Volume Mappings (-v)"},{"location":"images/docker-sabnzbd/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-sabnzbd/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-sabnzbd/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-sabnzbd/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-sabnzbd/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-sabnzbd/#support-info","text":"Shell access whilst the container is running: docker exec -it sabnzbd /bin/bash To monitor the logs of the container in realtime: docker logs -f sabnzbd Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sabnzbd Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sabnzbd:latest","title":"Support Info"},{"location":"images/docker-sabnzbd/#versions","text":"03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 31.07.22: - Add nightly tag. 10.03.22: - Add nzb-notify. 22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch. 25.01.22: - Rebase Unstable branch to Alpine. 13.01.22: - Add alpine branch 08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080 24.07.21: - Add python3-setuptools. 14.05.21: - Use linuxserver.io wheel index for pip packages. 12.02.21: - Clean up rust/cargo and pip cache. 17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink python to python3 . 02.01.20: - Add python3 on top of python2 to image during transition. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 25.02.19: - Rebase to Bionic, add python deps for scripts. 26.01.19: - Add pipeline logic and multi arch. 13.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 10.04.17: - Bump to 2.0 Release. 25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch. 08.02.17: - Add pythonioenconding=utf8 as env. 15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme . 11.09.16: - Bump to release of 1.10. 09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab. 28.08.16: - Rebase to alpine, using git version of sab. 17.03.16: - Bump to install 1.0 final at startup. 14.03.16: - Refresh image to pick up latest RC. 23.01.15: - Refresh image. 14.12.15: - Refresh image to pick up latest beta. 21.08.15: - Initial Release.","title":"Versions"},{"location":"images/docker-scrutiny/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker linuxserver/scrutiny Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in \"collector\" mode by specifying SCRUTINY_API_ENDPOINT . Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is 8080 ). You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off. A fully commented example configuration yaml file can be found in the original project repository here . Place this file in the location mounted to /config . A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26 . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : scrutiny : image : lscr.io/linuxserver/scrutiny:latest container_name : scrutiny cap_add : - SYS_RAWIO - SYS_ADMIN #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SCRUTINY_API_ENDPOINT=http://localhost:8080 - SCRUTINY_WEB=true - SCRUTINY_COLLECTOR=true volumes : - /path/to/config:/config - /run/udev:/run/udev:ro ports : - 8080:8080 devices : - /dev/sda:/dev/sda - /dev/sdb:/dev/sdb - /dev/nvme1n1:/dev/nvme1n1 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = scrutiny \\ --cap-add = SYS_RAWIO \\ --cap-add = SYS_ADMIN ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SCRUTINY_API_ENDPOINT = http://localhost:8080 \\ -e SCRUTINY_WEB = true \\ -e SCRUTINY_COLLECTOR = true \\ -p 8080 :8080 \\ -v /path/to/config:/config \\ -v /run/udev:/run/udev:ro \\ --device /dev/sda:/dev/sda \\ --device /dev/sdb:/dev/sdb \\ --device /dev/nvme1n1:/dev/nvme1n1 \\ --restart unless-stopped \\ lscr.io/linuxserver/scrutiny:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8080 Port for scrutiny's web interface and API. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. SCRUTINY_API_ENDPOINT=http://localhost:8080 # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector SCRUTINY_WEB=true # optional - Run the web service. SCRUTINY_COLLECTOR=true # optional - Run the metrics collector. Volume Mappings ( -v ) Volume Function /config Where config is stored. /run/udev:ro Provides necessary metadata to Scrutiny. Device Mappings ( --device ) Parameter Function /dev/sda This is how Scrutiny accesses drives. Optionally supply /dev:/dev instead for all devices. /dev/sdb A second drive. /dev/nvme1n1 An NVMe drive. NVMe requires --cap-add=SYS_ADMIN . Miscellaneous Options Parameter Function Portainer notice {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it scrutiny /bin/bash To monitor the logs of the container in realtime: docker logs -f scrutiny Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' scrutiny Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/scrutiny:latest Versions 13.06.22: - Deprecate container. 19.01.22: - Rebase to Alpine 3.15. 22.11.20: - Added fix for nsswitch.conf to resolve local hosts 17.09.20: - Initial Release.","title":"scrutiny"},{"location":"images/docker-scrutiny/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker","title":"DEPRECATION NOTICE"},{"location":"images/docker-scrutiny/#linuxserverscrutiny","text":"Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.","title":"linuxserver/scrutiny"},{"location":"images/docker-scrutiny/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-scrutiny/#application-setup","text":"This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in \"collector\" mode by specifying SCRUTINY_API_ENDPOINT . Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is 8080 ). You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off. A fully commented example configuration yaml file can be found in the original project repository here . Place this file in the location mounted to /config . A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26 .","title":"Application Setup"},{"location":"images/docker-scrutiny/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-scrutiny/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : scrutiny : image : lscr.io/linuxserver/scrutiny:latest container_name : scrutiny cap_add : - SYS_RAWIO - SYS_ADMIN #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SCRUTINY_API_ENDPOINT=http://localhost:8080 - SCRUTINY_WEB=true - SCRUTINY_COLLECTOR=true volumes : - /path/to/config:/config - /run/udev:/run/udev:ro ports : - 8080:8080 devices : - /dev/sda:/dev/sda - /dev/sdb:/dev/sdb - /dev/nvme1n1:/dev/nvme1n1 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-scrutiny/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = scrutiny \\ --cap-add = SYS_RAWIO \\ --cap-add = SYS_ADMIN ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SCRUTINY_API_ENDPOINT = http://localhost:8080 \\ -e SCRUTINY_WEB = true \\ -e SCRUTINY_COLLECTOR = true \\ -p 8080 :8080 \\ -v /path/to/config:/config \\ -v /run/udev:/run/udev:ro \\ --device /dev/sda:/dev/sda \\ --device /dev/sdb:/dev/sdb \\ --device /dev/nvme1n1:/dev/nvme1n1 \\ --restart unless-stopped \\ lscr.io/linuxserver/scrutiny:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-scrutiny/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-scrutiny/#ports-p","text":"Parameter Function 8080 Port for scrutiny's web interface and API.","title":"Ports (-p)"},{"location":"images/docker-scrutiny/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. SCRUTINY_API_ENDPOINT=http://localhost:8080 # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector SCRUTINY_WEB=true # optional - Run the web service. SCRUTINY_COLLECTOR=true # optional - Run the metrics collector.","title":"Environment Variables (-e)"},{"location":"images/docker-scrutiny/#volume-mappings-v","text":"Volume Function /config Where config is stored. /run/udev:ro Provides necessary metadata to Scrutiny.","title":"Volume Mappings (-v)"},{"location":"images/docker-scrutiny/#device-mappings-device","text":"Parameter Function /dev/sda This is how Scrutiny accesses drives. Optionally supply /dev:/dev instead for all devices. /dev/sdb A second drive. /dev/nvme1n1 An NVMe drive. NVMe requires --cap-add=SYS_ADMIN .","title":"Device Mappings (--device)"},{"location":"images/docker-scrutiny/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-scrutiny/#portainer-notice","text":"{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.","title":"Portainer notice"},{"location":"images/docker-scrutiny/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-scrutiny/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-scrutiny/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-scrutiny/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-scrutiny/#support-info","text":"Shell access whilst the container is running: docker exec -it scrutiny /bin/bash To monitor the logs of the container in realtime: docker logs -f scrutiny Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' scrutiny Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/scrutiny:latest","title":"Support Info"},{"location":"images/docker-scrutiny/#versions","text":"13.06.22: - Deprecate container. 19.01.22: - Rebase to Alpine 3.15. 22.11.20: - Added fix for nsswitch.conf to resolve local hosts 17.09.20: - Initial Release.","title":"Versions"},{"location":"images/docker-shout-irc/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge linuxserver/shout-irc Shout-irc is a web IRC client that you host on your own server. Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=shout-irc \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 9000:9000 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/shout-irc docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : shout-irc : image : linuxserver/shout-irc container_name : shout-irc environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 9000:9000 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9000 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup To log in to the application, browse to https://:9000. To setup user account(s) edit /config/config.json Change the value public: true, to public: false, restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface. Support Info Shell access whilst the container is running: docker exec -it shout-irc /bin/bash To monitor the logs of the container in realtime: docker logs -f shout-irc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shout-irc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/shout-irc Versions 11.06.19: - DEPRECATE IMAGE, USE THELOUNGE. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.08.18: - Rebase to alpine 3.8. 13.12.17: - Rebase to alpine 3.7. 27.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 31.08.16: - Rebase to alpine linux, move to lsiocommunity","title":"shout-irc"},{"location":"images/docker-shout-irc/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge","title":"DEPRECATION NOTICE"},{"location":"images/docker-shout-irc/#linuxservershout-irc","text":"Shout-irc is a web IRC client that you host on your own server.","title":"linuxserver/shout-irc"},{"location":"images/docker-shout-irc/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-shout-irc/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-shout-irc/#docker","text":"docker create \\ --name=shout-irc \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 9000:9000 \\ -v :/config \\ --restart unless-stopped \\ linuxserver/shout-irc","title":"docker"},{"location":"images/docker-shout-irc/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : shout-irc : image : linuxserver/shout-irc container_name : shout-irc environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 9000:9000 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-shout-irc/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-shout-irc/#ports-p","text":"Parameter Function 9000 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-shout-irc/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-shout-irc/#volume-mappings-v","text":"Volume Function /config Configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-shout-irc/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-shout-irc/#application-setup","text":"To log in to the application, browse to https://:9000. To setup user account(s) edit /config/config.json Change the value public: true, to public: false, restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface.","title":"Application Setup"},{"location":"images/docker-shout-irc/#support-info","text":"Shell access whilst the container is running: docker exec -it shout-irc /bin/bash To monitor the logs of the container in realtime: docker logs -f shout-irc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shout-irc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/shout-irc","title":"Support Info"},{"location":"images/docker-shout-irc/#versions","text":"11.06.19: - DEPRECATE IMAGE, USE THELOUNGE. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.08.18: - Rebase to alpine 3.8. 13.12.17: - Rebase to alpine 3.7. 27.05.17: - Rebase to alpine 3.6. 09.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 31.08.16: - Rebase to alpine linux, move to lsiocommunity","title":"Versions"},{"location":"images/docker-sickchill/","text":"linuxserver/sickchill Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sickchill:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Web interface is at :8081 , set paths for downloads, tv-shows to match docker mappings via the webui. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : sickchill : image : lscr.io/linuxserver/sickchill:latest container_name : sickchill environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/data:/downloads - /path/to/data:/tv ports : - 8081:8081 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = sickchill \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ -v /path/to/data:/downloads \\ -v /path/to/data:/tv \\ --restart unless-stopped \\ lscr.io/linuxserver/sickchill:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8081 will map the container's port 8081 to port 8081 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London specify your TimeZone e.g. Europe/London Volume Mappings ( -v ) Volume Function /config this will store config on the docker host /downloads this will store any downloaded data on the docker host /tv this will allow sickchill to view what you already have Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it sickchill /bin/bash To monitor the logs of the container in realtime: docker logs -f sickchill Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickchill Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickchill:latest Versions 17.02.22: - Rebase to alpine 3.17. 17.02.22: - Rebase to alpine 3.15. 20.11.21: - Modify binary usage from SickChill.py to SickChill. 14.05.21: - Add linuxserver wheel index. 12.02.21: - Rebasing to alpine 3.13. Add python certifi. 17.09.20: - Update dependencies. 06.09.20: - Switch to python3, install pip package. 22.04.20: - Switch to git clone and using git tags for versioning. 09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 17.04.19: - Adding Nodejs dependancy. 31.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.10.18: - Initial Release.","title":"sickchill"},{"location":"images/docker-sickchill/#linuxserversickchill","text":"Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.","title":"linuxserver/sickchill"},{"location":"images/docker-sickchill/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sickchill:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-sickchill/#application-setup","text":"Web interface is at :8081 , set paths for downloads, tv-shows to match docker mappings via the webui.","title":"Application Setup"},{"location":"images/docker-sickchill/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-sickchill/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : sickchill : image : lscr.io/linuxserver/sickchill:latest container_name : sickchill environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/data:/downloads - /path/to/data:/tv ports : - 8081:8081 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-sickchill/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = sickchill \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ -v /path/to/data:/downloads \\ -v /path/to/data:/tv \\ --restart unless-stopped \\ lscr.io/linuxserver/sickchill:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-sickchill/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sickchill/#ports-p","text":"Parameter Function 8081 will map the container's port 8081 to port 8081 on the host","title":"Ports (-p)"},{"location":"images/docker-sickchill/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London specify your TimeZone e.g. Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-sickchill/#volume-mappings-v","text":"Volume Function /config this will store config on the docker host /downloads this will store any downloaded data on the docker host /tv this will allow sickchill to view what you already have","title":"Volume Mappings (-v)"},{"location":"images/docker-sickchill/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-sickchill/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-sickchill/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-sickchill/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-sickchill/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-sickchill/#support-info","text":"Shell access whilst the container is running: docker exec -it sickchill /bin/bash To monitor the logs of the container in realtime: docker logs -f sickchill Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickchill Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickchill:latest","title":"Support Info"},{"location":"images/docker-sickchill/#versions","text":"17.02.22: - Rebase to alpine 3.17. 17.02.22: - Rebase to alpine 3.15. 20.11.21: - Modify binary usage from SickChill.py to SickChill. 14.05.21: - Add linuxserver wheel index. 12.02.21: - Rebasing to alpine 3.13. Add python certifi. 17.09.20: - Update dependencies. 06.09.20: - Switch to python3, install pip package. 22.04.20: - Switch to git clone and using git tags for versioning. 09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 17.04.19: - Adding Nodejs dependancy. 31.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.10.18: - Initial Release.","title":"Versions"},{"location":"images/docker-sickgear/","text":"linuxserver/sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sickgear:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Setting up the application Access the webui at :8081 , for more information check out SickGear . Migration Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup The post processing directory which is volume mounted as downloads within this container may be incoming in other versions. The permissions environmental variables which are defined as PGID and PUID within this container may have been APP_UID and APP_UID in other versions. The configuration file directory which is volume mounted as config within this container may be set as the environmetal variable APP_DATA in other versions. The cache directory which is set in config.ini may be configured as a fixed path cache_dir = /data/cache . Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache which will allow SickGear to look for the folder relative to the volume mounted /config directory. It is recommended that a clean install be completed, rather than a migration, however if migration is necessary: start a new instance of this image compare and align SickGear version numbers bewteen old and new. Ideally they should match but at a minumum the old vesion should be a lower version number to allow SickGear itself to try and migrate stop both containers notice the configuration difference and migrate copies of the old settings into the new app start the new container and test Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : sickgear : image : lscr.io/linuxserver/sickgear:latest container_name : sickgear environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/data:/tv - /path/to/data:/downloads ports : - 8081:8081 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = sickgear \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ -v /path/to/data:/tv \\ -v /path/to/data:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/sickgear:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8081 will map the container's port 8081 to port 8081 on the host Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config this will store any uploaded data on the docker host /tv where you store your tv shows /downloads your downloads folder for post processing (must not be download in progress) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it sickgear /bin/bash To monitor the logs of the container in realtime: docker logs -f sickgear Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickgear Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickgear:latest Versions 18.11.22: - Update service file from legacy SickBeard.py to sickgear.py. 10.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 19.09.22: - Rebase to alpine 3.15. Build unrar from source. 31.01.21: - Add unrar. 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 03.06.20: - Rebasing to alpine 3.12, switch to python3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 07.11.18: - Pipeline prep 07.07.18: - Initial draft release","title":"sickgear"},{"location":"images/docker-sickgear/#linuxserversickgear","text":"SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear","title":"linuxserver/sickgear"},{"location":"images/docker-sickgear/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sickgear:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-sickgear/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-sickgear/#setting-up-the-application","text":"Access the webui at :8081 , for more information check out SickGear .","title":"Setting up the application"},{"location":"images/docker-sickgear/#migration","text":"Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup The post processing directory which is volume mounted as downloads within this container may be incoming in other versions. The permissions environmental variables which are defined as PGID and PUID within this container may have been APP_UID and APP_UID in other versions. The configuration file directory which is volume mounted as config within this container may be set as the environmetal variable APP_DATA in other versions. The cache directory which is set in config.ini may be configured as a fixed path cache_dir = /data/cache . Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache which will allow SickGear to look for the folder relative to the volume mounted /config directory. It is recommended that a clean install be completed, rather than a migration, however if migration is necessary: start a new instance of this image compare and align SickGear version numbers bewteen old and new. Ideally they should match but at a minumum the old vesion should be a lower version number to allow SickGear itself to try and migrate stop both containers notice the configuration difference and migrate copies of the old settings into the new app start the new container and test","title":"Migration"},{"location":"images/docker-sickgear/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-sickgear/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : sickgear : image : lscr.io/linuxserver/sickgear:latest container_name : sickgear environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/data:/tv - /path/to/data:/downloads ports : - 8081:8081 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-sickgear/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = sickgear \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8081 :8081 \\ -v /path/to/data:/config \\ -v /path/to/data:/tv \\ -v /path/to/data:/downloads \\ --restart unless-stopped \\ lscr.io/linuxserver/sickgear:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-sickgear/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sickgear/#ports-p","text":"Parameter Function 8081 will map the container's port 8081 to port 8081 on the host","title":"Ports (-p)"},{"location":"images/docker-sickgear/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-sickgear/#volume-mappings-v","text":"Volume Function /config this will store any uploaded data on the docker host /tv where you store your tv shows /downloads your downloads folder for post processing (must not be download in progress)","title":"Volume Mappings (-v)"},{"location":"images/docker-sickgear/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-sickgear/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-sickgear/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-sickgear/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-sickgear/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-sickgear/#support-info","text":"Shell access whilst the container is running: docker exec -it sickgear /bin/bash To monitor the logs of the container in realtime: docker logs -f sickgear Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickgear Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickgear:latest","title":"Support Info"},{"location":"images/docker-sickgear/#versions","text":"18.11.22: - Update service file from legacy SickBeard.py to sickgear.py. 10.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 19.09.22: - Rebase to alpine 3.15. Build unrar from source. 31.01.21: - Add unrar. 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 03.06.20: - Rebasing to alpine 3.12, switch to python3. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 07.11.18: - Pipeline prep 07.07.18: - Initial draft release","title":"Versions"},{"location":"images/docker-sickrage/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead linuxserver/sickrage Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Here are some example snippets to help you get started creating a container from this image. docker docker create \\ --name=sickrage \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 8081:8081 \\ -v :/config \\ -v :/downloads \\ -v :/tv \\ --restart unless-stopped \\ linuxserver/sickrage docker-compose Compatible with docker-compose v2 schemas. --- version : \"2\" services : sickrage : image : linuxserver/sickrage container_name : sickrage environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/tv ports : - 8081:8081 restart : unless-stopped Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8081 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. /downloads ISOs. /tv TV library directory. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) Application Setup Web interface is at :8081 , set paths for downloads, tv-shows to match docker mappings via the webui. Support Info Shell access whilst the container is running: docker exec -it sickrage /bin/bash To monitor the logs of the container in realtime: docker logs -f sickrage Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickrage Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/sickrage Versions 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 09.08.18: - Change repository to Sick-Rage 17.08.18: - Rebase to alpine 3.8. 20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources. 12.12.17: - Rebase to alpine 3.7. 06.08.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 30.12.15: - Build later version of unrar from source, removed uneeded mako package. 20.11.15: - Updated to new repo, by SickRage Team. 15.10.15: - Initial Release.","title":"sickrage"},{"location":"images/docker-sickrage/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead","title":"DEPRECATION NOTICE"},{"location":"images/docker-sickrage/#linuxserversickrage","text":"","title":"linuxserver/sickrage"},{"location":"images/docker-sickrage/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-sickrage/#usage","text":"Here are some example snippets to help you get started creating a container from this image.","title":"Usage"},{"location":"images/docker-sickrage/#docker","text":"docker create \\ --name=sickrage \\ -e PUID=1000 \\ -e PGID=1000 \\ -e TZ=Europe/London \\ -p 8081:8081 \\ -v :/config \\ -v :/downloads \\ -v :/tv \\ --restart unless-stopped \\ linuxserver/sickrage","title":"docker"},{"location":"images/docker-sickrage/#docker-compose","text":"Compatible with docker-compose v2 schemas. --- version : \"2\" services : sickrage : image : linuxserver/sickrage container_name : sickrage environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/downloads - :/tv ports : - 8081:8081 restart : unless-stopped","title":"docker-compose"},{"location":"images/docker-sickrage/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sickrage/#ports-p","text":"Parameter Function 8081 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-sickrage/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-sickrage/#volume-mappings-v","text":"Volume Function /config Configuration files. /downloads ISOs. /tv TV library directory.","title":"Volume Mappings (-v)"},{"location":"images/docker-sickrage/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)","title":"User / Group Identifiers"},{"location":"images/docker-sickrage/#application-setup","text":"Web interface is at :8081 , set paths for downloads, tv-shows to match docker mappings via the webui.","title":"Application Setup"},{"location":"images/docker-sickrage/#support-info","text":"Shell access whilst the container is running: docker exec -it sickrage /bin/bash To monitor the logs of the container in realtime: docker logs -f sickrage Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickrage Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/sickrage","title":"Support Info"},{"location":"images/docker-sickrage/#versions","text":"23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 09.08.18: - Change repository to Sick-Rage 17.08.18: - Rebase to alpine 3.8. 20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources. 12.12.17: - Rebase to alpine 3.7. 06.08.17: - Internal git pull instead of at runtime. 25.05.17: - Rebase to alpine 3.6. 07.02.17: - Rebase to alpine 3.5. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 30.12.15: - Build later version of unrar from source, removed uneeded mako package. 20.11.15: - Updated to new repo, by SickRage Team. 15.10.15: - Initial Release.","title":"Versions"},{"location":"images/docker-smokeping/","text":"linuxserver/smokeping Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis . Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/smokeping:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Once running the URL will be http:///smokeping/smokeping.cgi . For example a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi . Basics are, edit the Targets file to ping the hosts you're interested in to match the format found there. Wait 10 minutes. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : smokeping : image : lscr.io/linuxserver/smokeping:latest container_name : smokeping environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/smokeping/config:/config - /path/to/smokeping/data:/data ports : - 80:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = smokeping \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/smokeping/config:/config \\ -v /path/to/smokeping/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/smokeping:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Allows HTTP access to the internal webserver. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Configure the Targets file here /data Storage location for db and application data (graphs etc) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it smokeping /bin/bash To monitor the logs of the container in realtime: docker logs -f smokeping Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' smokeping Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/smokeping:latest Versions 12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap. 29.03.21: - Dockerfile: Install curl before we call it 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.11.18: - Allow access without /smokeping in URL. 28.04.18: - Rebase to alpine 3.8. 09.04.18: - Add bc package. 08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo). 13.12.17: - Expose httpd_conf to /config. 13.12.17: - Rebase to alpine 3.7. 24.07.17: - Add :unraid tag for hosts without ipv6. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Rebase to alpine 3.6. 07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations 12.04.17: - Fix cropper.js path, thanks nibbledeez. 09.02.17: - Rebase to alpine 3.5. 17.10.16: - Add ttf-dejavu package as per LT forum . 10.09.16: - Add layer badges to README. 05.09.16: - Add curl package. 28.08.16: - Add badges to README. 25.07.16: - Rebase to alpine linux. 23.07.16: - Fix apt script confusion. 29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)","title":"smokeping"},{"location":"images/docker-smokeping/#linuxserversmokeping","text":"Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis .","title":"linuxserver/smokeping"},{"location":"images/docker-smokeping/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/smokeping:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-smokeping/#application-setup","text":"Once running the URL will be http:///smokeping/smokeping.cgi . For example a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi . Basics are, edit the Targets file to ping the hosts you're interested in to match the format found there. Wait 10 minutes.","title":"Application Setup"},{"location":"images/docker-smokeping/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-smokeping/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : smokeping : image : lscr.io/linuxserver/smokeping:latest container_name : smokeping environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/smokeping/config:/config - /path/to/smokeping/data:/data ports : - 80:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-smokeping/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = smokeping \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -v /path/to/smokeping/config:/config \\ -v /path/to/smokeping/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/smokeping:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-smokeping/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-smokeping/#ports-p","text":"Parameter Function 80 Allows HTTP access to the internal webserver.","title":"Ports (-p)"},{"location":"images/docker-smokeping/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-smokeping/#volume-mappings-v","text":"Volume Function /config Configure the Targets file here /data Storage location for db and application data (graphs etc)","title":"Volume Mappings (-v)"},{"location":"images/docker-smokeping/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-smokeping/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-smokeping/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-smokeping/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-smokeping/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-smokeping/#support-info","text":"Shell access whilst the container is running: docker exec -it smokeping /bin/bash To monitor the logs of the container in realtime: docker logs -f smokeping Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' smokeping Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/smokeping:latest","title":"Support Info"},{"location":"images/docker-smokeping/#versions","text":"12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap. 29.03.21: - Dockerfile: Install curl before we call it 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 14.11.18: - Allow access without /smokeping in URL. 28.04.18: - Rebase to alpine 3.8. 09.04.18: - Add bc package. 08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo). 13.12.17: - Expose httpd_conf to /config. 13.12.17: - Rebase to alpine 3.7. 24.07.17: - Add :unraid tag for hosts without ipv6. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 28.05.17: - Rebase to alpine 3.6. 07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations 12.04.17: - Fix cropper.js path, thanks nibbledeez. 09.02.17: - Rebase to alpine 3.5. 17.10.16: - Add ttf-dejavu package as per LT forum . 10.09.16: - Add layer badges to README. 05.09.16: - Add curl package. 28.08.16: - Add badges to README. 25.07.16: - Rebase to alpine linux. 23.07.16: - Fix apt script confusion. 29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)","title":"Versions"},{"location":"images/docker-snapdrop/","text":"linuxserver/snapdrop Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/snapdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Webui is accessible at http://SERVERIP:PORT If you intend to expose Snapdrop to the internet, edit /config/nginx/site-confs/default.conf and uncomment the real_ip settings Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : snapdrop : image : lscr.io/linuxserver/snapdrop:latest container_name : snapdrop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = snapdrop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/snapdrop:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui 443 https gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Persistent configs and logs. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it snapdrop /bin/bash To monitor the logs of the container in realtime: docker logs -f snapdrop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snapdrop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snapdrop:latest Versions 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config. 15.09.20: - Initial Release.","title":"snapdrop"},{"location":"images/docker-snapdrop/#linuxserversnapdrop","text":"Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.","title":"linuxserver/snapdrop"},{"location":"images/docker-snapdrop/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/snapdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-snapdrop/#application-setup","text":"Webui is accessible at http://SERVERIP:PORT If you intend to expose Snapdrop to the internet, edit /config/nginx/site-confs/default.conf and uncomment the real_ip settings","title":"Application Setup"},{"location":"images/docker-snapdrop/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-snapdrop/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : snapdrop : image : lscr.io/linuxserver/snapdrop:latest container_name : snapdrop environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-snapdrop/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = snapdrop \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 80 :80 \\ -p 443 :443 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/snapdrop:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-snapdrop/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-snapdrop/#ports-p","text":"Parameter Function 80 http gui 443 https gui","title":"Ports (-p)"},{"location":"images/docker-snapdrop/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-snapdrop/#volume-mappings-v","text":"Volume Function /config Persistent configs and logs.","title":"Volume Mappings (-v)"},{"location":"images/docker-snapdrop/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-snapdrop/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-snapdrop/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-snapdrop/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-snapdrop/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-snapdrop/#support-info","text":"Shell access whilst the container is running: docker exec -it snapdrop /bin/bash To monitor the logs of the container in realtime: docker logs -f snapdrop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snapdrop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snapdrop:latest","title":"Support Info"},{"location":"images/docker-snapdrop/#versions","text":"20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config. 15.09.20: - Initial Release.","title":"Versions"},{"location":"images/docker-snipe-it/","text":"linuxserver/snipe-it Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/snipe-it:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the webui at :8080 , for more information check out Snipe-it . This container requires a MySQL or MariaDB server to connect to, we reccomend ours This container also generates an SSL certificate and stores it in /config/keys/cert.crt /config/keys/cert.key To use your own certificate swap these files with yours. To use SSL forward your port to 443 inside the container IE: -p 443:443 The application accepts a series of environment variables to further customize itself on boot: Parameter Function -e APP_ENV= Default is production but can use testing or develop -e APP_DEBUG= Set to true to see debugging output in the web UI -e APP_LOCALE= Default is en set to the language preferred full list here -e MAIL_PORT_587_TCP_ADDR= SMTP mailserver ip or hostname -e MAIL_PORT_587_TCP_PORT= SMTP mailserver port -e MAIL_ENV_FROM_ADDR= The email address mail should be replied to and listed when sent -e MAIL_ENV_FROM_NAME= The name listed on email sent from the default account on the system -e MAIL_ENV_ENCRYPTION= Mail encryption to use IE tls -e MAIL_ENV_USERNAME= SMTP server login username -e MAIL_ENV_PASSWORD= SMTP server login password PHP customization This image uses our NGINX base image all configuration files for PHP and NGINX are located in /config/php . To overide any defaults please modify /config/php/php-local.ini IE for upload size: upload_max_filesize = 16 post_max_size = 16M Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : snipe-it : image : lscr.io/linuxserver/snipe-it:latest container_name : snipe-it environment : - PUID=1000 - PGID=1000 - APP_URL=http://localhost:8080 - MYSQL_PORT_3306_TCP_ADDR= - MYSQL_PORT_3306_TCP_PORT= - MYSQL_DATABASE= - MYSQL_USER= - MYSQL_PASSWORD= - TZ=US/Pacific volumes : - /path/to/data:/config ports : - 8080:80 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = snipe-it \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e APP_URL = http://localhost:8080 \\ -e MYSQL_PORT_3306_TCP_ADDR = \\ -e MYSQL_PORT_3306_TCP_PORT = \\ -e MYSQL_DATABASE = \\ -e MYSQL_USER = \\ -e MYSQL_PASSWORD = \\ -e TZ = US/Pacific \\ -p 8080 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/snipe-it:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 Snipe-IT Web UI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation APP_URL=http://localhost:8080 Hostname or IP and port if applicable, be sure to define https/http MYSQL_PORT_3306_TCP_ADDR= Mysql hostname or IP to use MYSQL_PORT_3306_TCP_PORT= Mysql port to use MYSQL_DATABASE= Mysql database to use MYSQL_USER= Mysql user to use MYSQL_PASSWORD= Mysql password to use TZ=US/Pacific Specify a timezone to use EG Europe/London, this is required to run snipe-it Volume Mappings ( -v ) Volume Function /config Contains your config files and data storage for Snipe-IT Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it snipe-it /bin/bash To monitor the logs of the container in realtime: docker logs -f snipe-it Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snipe-it Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snipe-it:latest Versions 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 14.05.22: - Add php7-sodium for v6. 12.04.22: - Don't build development elements. 02.03.22: - Rework init logic, do not show default compose. 29.06.21: - Rebasing to alpine 3.14. 30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time. 10.04.19: - Fix permissions for new bootstrap cache directory. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 31.10.18: - Rebasing to alpine 3.8 05.08.18: - Migration to live build server. 13.06.18: - Initial Release.","title":"snipe-it"},{"location":"images/docker-snipe-it/#linuxserversnipe-it","text":"Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.","title":"linuxserver/snipe-it"},{"location":"images/docker-snipe-it/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/snipe-it:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-snipe-it/#application-setup","text":"Access the webui at :8080 , for more information check out Snipe-it . This container requires a MySQL or MariaDB server to connect to, we reccomend ours This container also generates an SSL certificate and stores it in /config/keys/cert.crt /config/keys/cert.key To use your own certificate swap these files with yours. To use SSL forward your port to 443 inside the container IE: -p 443:443 The application accepts a series of environment variables to further customize itself on boot: Parameter Function -e APP_ENV= Default is production but can use testing or develop -e APP_DEBUG= Set to true to see debugging output in the web UI -e APP_LOCALE= Default is en set to the language preferred full list here -e MAIL_PORT_587_TCP_ADDR= SMTP mailserver ip or hostname -e MAIL_PORT_587_TCP_PORT= SMTP mailserver port -e MAIL_ENV_FROM_ADDR= The email address mail should be replied to and listed when sent -e MAIL_ENV_FROM_NAME= The name listed on email sent from the default account on the system -e MAIL_ENV_ENCRYPTION= Mail encryption to use IE tls -e MAIL_ENV_USERNAME= SMTP server login username -e MAIL_ENV_PASSWORD= SMTP server login password","title":"Application Setup"},{"location":"images/docker-snipe-it/#php-customization","text":"This image uses our NGINX base image all configuration files for PHP and NGINX are located in /config/php . To overide any defaults please modify /config/php/php-local.ini IE for upload size: upload_max_filesize = 16 post_max_size = 16M","title":"PHP customization"},{"location":"images/docker-snipe-it/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-snipe-it/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : snipe-it : image : lscr.io/linuxserver/snipe-it:latest container_name : snipe-it environment : - PUID=1000 - PGID=1000 - APP_URL=http://localhost:8080 - MYSQL_PORT_3306_TCP_ADDR= - MYSQL_PORT_3306_TCP_PORT= - MYSQL_DATABASE= - MYSQL_USER= - MYSQL_PASSWORD= - TZ=US/Pacific volumes : - /path/to/data:/config ports : - 8080:80 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-snipe-it/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = snipe-it \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e APP_URL = http://localhost:8080 \\ -e MYSQL_PORT_3306_TCP_ADDR = \\ -e MYSQL_PORT_3306_TCP_PORT = \\ -e MYSQL_DATABASE = \\ -e MYSQL_USER = \\ -e MYSQL_PASSWORD = \\ -e TZ = US/Pacific \\ -p 8080 :80 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/snipe-it:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-snipe-it/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-snipe-it/#ports-p","text":"Parameter Function 80 Snipe-IT Web UI","title":"Ports (-p)"},{"location":"images/docker-snipe-it/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation APP_URL=http://localhost:8080 Hostname or IP and port if applicable, be sure to define https/http MYSQL_PORT_3306_TCP_ADDR= Mysql hostname or IP to use MYSQL_PORT_3306_TCP_PORT= Mysql port to use MYSQL_DATABASE= Mysql database to use MYSQL_USER= Mysql user to use MYSQL_PASSWORD= Mysql password to use TZ=US/Pacific Specify a timezone to use EG Europe/London, this is required to run snipe-it","title":"Environment Variables (-e)"},{"location":"images/docker-snipe-it/#volume-mappings-v","text":"Volume Function /config Contains your config files and data storage for Snipe-IT","title":"Volume Mappings (-v)"},{"location":"images/docker-snipe-it/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-snipe-it/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-snipe-it/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-snipe-it/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-snipe-it/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-snipe-it/#support-info","text":"Shell access whilst the container is running: docker exec -it snipe-it /bin/bash To monitor the logs of the container in realtime: docker logs -f snipe-it Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snipe-it Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snipe-it:latest","title":"Support Info"},{"location":"images/docker-snipe-it/#versions","text":"28.12.22: - Rebase to Alpine 3.17, migrate to s6v3. 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 14.05.22: - Add php7-sodium for v6. 12.04.22: - Don't build development elements. 02.03.22: - Rework init logic, do not show default compose. 29.06.21: - Rebasing to alpine 3.14. 30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time. 10.04.19: - Fix permissions for new bootstrap cache directory. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 31.10.18: - Rebasing to alpine 3.8 05.08.18: - Migration to live build server. 13.06.18: - Initial Release.","title":"Versions"},{"location":"images/docker-sonarr/","text":"linuxserver/sonarr Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sonarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from Sonarr (currently v3) develop \u2705 Development releases from Sonarr (currently v4) Application Setup Access the webui at :8989 , for more information check out Sonarr . Media folders We have set /tv and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : sonarr : image : lscr.io/linuxserver/sonarr:latest container_name : sonarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/tvseries:/tv #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 8989:8989 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = sonarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8989 :8989 \\ -v /path/to/data:/config \\ -v /path/to/tvseries:/tv ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/sonarr:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8989 The port for the Sonarr webinterface Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Sonarr Volume Mappings ( -v ) Volume Function /config Database and sonarr configs /tv Location of TV library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup) Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it sonarr /bin/bash To monitor the logs of the container in realtime: docker logs -f sonarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sonarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sonarr:latest Versions 24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16. 03.08.22: - Deprecate armhf. 02.08.22: - Add armhf deprecation warning. 28.04.22: - Rebase master branch to mono 6.12 base (focal). 20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch. 28.12.21: - Add develop-alpine branch. 11.05.21: - Make the paths clearer to the user. 10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update. 18.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 10.05.19: - Rebase to Bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.02.19: - Multi arch images and pipeline build logic 15.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 17.04.17: - Switch to using inhouse mono baseimage, adds python also. 14.04.17: - Change to mount /etc/localtime in README, thanks cbgj. 13.04.17: - Switch to official mono repository. 30.09.16: - Fix umask 23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable 15.09.16: - Add libcurl3 package. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 20.07.16: - Rebase to xenial. 31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.","title":"sonarr"},{"location":"images/docker-sonarr/#linuxserversonarr","text":"Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.","title":"linuxserver/sonarr"},{"location":"images/docker-sonarr/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sonarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-sonarr/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases from Sonarr (currently v3) develop \u2705 Development releases from Sonarr (currently v4)","title":"Version Tags"},{"location":"images/docker-sonarr/#application-setup","text":"Access the webui at :8989 , for more information check out Sonarr .","title":"Application Setup"},{"location":"images/docker-sonarr/#media-folders","text":"We have set /tv and /downloads as optional paths , this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content. Use the optional paths if you dont understand, or dont want hardlinks/atomic moves. The folks over at servarr.com wrote a good write-up on how to get started with this.","title":"Media folders"},{"location":"images/docker-sonarr/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-sonarr/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : sonarr : image : lscr.io/linuxserver/sonarr:latest container_name : sonarr environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/data:/config - /path/to/tvseries:/tv #optional - /path/to/downloadclient-downloads:/downloads #optional ports : - 8989:8989 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-sonarr/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = sonarr \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8989 :8989 \\ -v /path/to/data:/config \\ -v /path/to/tvseries:/tv ` #optional` \\ -v /path/to/downloadclient-downloads:/downloads ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/sonarr:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-sonarr/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sonarr/#ports-p","text":"Parameter Function 8989 The port for the Sonarr webinterface","title":"Ports (-p)"},{"location":"images/docker-sonarr/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Sonarr","title":"Environment Variables (-e)"},{"location":"images/docker-sonarr/#volume-mappings-v","text":"Volume Function /config Database and sonarr configs /tv Location of TV library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)","title":"Volume Mappings (-v)"},{"location":"images/docker-sonarr/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-sonarr/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-sonarr/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-sonarr/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-sonarr/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-sonarr/#support-info","text":"Shell access whilst the container is running: docker exec -it sonarr /bin/bash To monitor the logs of the container in realtime: docker logs -f sonarr Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sonarr Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sonarr:latest","title":"Support Info"},{"location":"images/docker-sonarr/#versions","text":"24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16. 03.08.22: - Deprecate armhf. 02.08.22: - Add armhf deprecation warning. 28.04.22: - Rebase master branch to mono 6.12 base (focal). 20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch. 28.12.21: - Add develop-alpine branch. 11.05.21: - Make the paths clearer to the user. 10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update. 18.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 05.04.20: - Move app to /app. 01.08.19: - Rebase to Linuxserver LTS mono version. 13.06.19: - Add env variable for setting umask. 10.05.19: - Rebase to Bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.02.19: - Multi arch images and pipeline build logic 15.12.17: - Fix continuation lines. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 17.04.17: - Switch to using inhouse mono baseimage, adds python also. 14.04.17: - Change to mount /etc/localtime in README, thanks cbgj. 13.04.17: - Switch to official mono repository. 30.09.16: - Fix umask 23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable 15.09.16: - Add libcurl3 package. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 20.07.16: - Rebase to xenial. 31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.","title":"Versions"},{"location":"images/docker-sqlitebrowser/","text":"linuxserver/sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sqlitebrowser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : sqlitebrowser : image : lscr.io/linuxserver/sqlitebrowser:latest container_name : sqlitebrowser security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = sqlitebrowser \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/sqlitebrowser:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Sqlitebrowser desktop gui. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings and potentially dump files. Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it sqlitebrowser /bin/bash To monitor the logs of the container in realtime: docker logs -f sqlitebrowser Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sqlitebrowser Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sqlitebrowser:latest Versions 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 16.02.22: - Rebase to Alpine. 20.01.21: - Remove Wireshark reference. 29.07.20: - Initial release.","title":"sqlitebrowser"},{"location":"images/docker-sqlitebrowser/#linuxserversqlitebrowser","text":"DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.","title":"linuxserver/sqlitebrowser"},{"location":"images/docker-sqlitebrowser/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/sqlitebrowser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-sqlitebrowser/#application-setup","text":"The application can be accessed at: http://yourhost:3000/","title":"Application Setup"},{"location":"images/docker-sqlitebrowser/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-sqlitebrowser/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : sqlitebrowser : image : lscr.io/linuxserver/sqlitebrowser:latest container_name : sqlitebrowser security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-sqlitebrowser/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = sqlitebrowser \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/sqlitebrowser:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-sqlitebrowser/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-sqlitebrowser/#ports-p","text":"Parameter Function 3000 Sqlitebrowser desktop gui.","title":"Ports (-p)"},{"location":"images/docker-sqlitebrowser/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-sqlitebrowser/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings and potentially dump files.","title":"Volume Mappings (-v)"},{"location":"images/docker-sqlitebrowser/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-sqlitebrowser/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-sqlitebrowser/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-sqlitebrowser/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-sqlitebrowser/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-sqlitebrowser/#support-info","text":"Shell access whilst the container is running: docker exec -it sqlitebrowser /bin/bash To monitor the logs of the container in realtime: docker logs -f sqlitebrowser Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sqlitebrowser Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sqlitebrowser:latest","title":"Support Info"},{"location":"images/docker-sqlitebrowser/#versions","text":"23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 16.02.22: - Rebase to Alpine. 20.01.21: - Remove Wireshark reference. 29.07.20: - Initial release.","title":"Versions"},{"location":"images/docker-swag/","text":"linuxserver/swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/swag:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Validation and initial setup Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.). If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. You can use our duckdns image to update your IP on duckdns.org. For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80 For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\" Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\" DuckDNS only supoprts two types of DNS validated certificates (not both at the same time): Certs that only cover your main subdomain (ie. yoursubdomain.duckdns.org , leave the SUBDOMAINS variable empty) Certs that cover sub-subdomains of your main subdomain (ie. *.yoursubdomain.duckdns.org , set the SUBDOMAINS variable to wildcard ) --cap-add=NET_ADMIN is required for fail2ban to modify iptables After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf ). Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances. Security and password protection The container detects changes to url and subdomains, revokes existing certs and generates new ones during start. Per RFC7919 , the container is shipping ffdhe4096 as the dhparams.pem . If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it swag htpasswd -c /config/nginx/.htpasswd You can add multiple user:pass to .htpasswd . For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server. Site config and reverse proxy The default site config resides at /config/nginx/site-confs/default.conf . Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start. Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo . If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines If you wish to redirect http to https, you must expose port 80 Using certs in other containers This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc. To use these certs in other containers, do either of the following: (Easier) Mount the container's config folder in other containers (ie. -v /path-to-swag-config:/swag-ssl ) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/ (More secure) Mount the SWAG folder etc that resides under /config in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl ) and in the other containers, use the cert location /swag-ssl/letsencrypt/live// (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs) These certs include: cert.pem , chain.pem , fullchain.pem and privkey.pem , which are generated by Certbot and used by nginx and various other apps privkey.pfx , a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password) priv-fullchain-bundle.pem , a pem cert that bundles the private key and the fullchain, used by apps like ZNC Using fail2ban This container includes fail2ban set up with 5 jails by default: nginx-http-auth nginx-badbots nginx-botsearch nginx-deny nginx-unauthorized To enable or disable other jails, modify the file /config/fail2ban/jail.local To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local ) You can check which jails are active via docker exec -it swag fail2ban-client status You can check the status of a specific jail via docker exec -it swag fail2ban-client status You can unban an IP via docker exec -it swag fail2ban-client set unbanip A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands Updating configs This container creates a number of configs for nginx, proxy samples, etc. Config updates are noted in the changelog but not automatically applied to your files. If you have modified a file with noted changes in the changelog: Keep your existing configs as is (not broken, don't fix) Review our repository commits and apply the new changes yourself Delete the modified config file with listed updates, restart the container, reapply your changes If you have NOT modified a file with noted changes in the changelog: Delete the config file with listed updates, restart the container Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not. You can check the new sample and adjust your active config as needed. Migration from the old linuxserver/letsencrypt image Please follow the instructions on this blog post . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag:latest container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - VALIDATION=http - SUBDOMAINS=www, #optional - CERTPROVIDER= #optional - DNSPLUGIN=cloudflare #optional - PROPAGATION= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes : - /path/to/appdata/config:/config ports : - 443:443 - 80:80 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = swag \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = yourdomain.url \\ -e VALIDATION = http \\ -e SUBDOMAINS = www, ` #optional` \\ -e CERTPROVIDER = ` #optional` \\ -e DNSPLUGIN = cloudflare ` #optional` \\ -e PROPAGATION = ` #optional` \\ -e EMAIL = ` #optional` \\ -e ONLY_SUBDOMAINS = false ` #optional` \\ -e EXTRA_DOMAINS = ` #optional` \\ -e STAGING = false ` #optional` \\ -p 443 :443 \\ -p 80 :80 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 443 Https port 80 Http port (required for http validation and http -> https redirect) Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. URL=yourdomain.url Top url you have control over ( customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). VALIDATION=http Certbot validation method to use, options are http or dns ( dns method also requires DNSPLUGIN variable set). SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud . For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns validation only) CERTPROVIDER= Optionally define the cert provider. Set to zerossl for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in EMAIL env var). Otherwise defaults to Let's Encrypt. DNSPLUGIN=cloudflare Required if VALIDATION is set to dns . Options are acmedns , aliyun , azure , cloudflare , cpanel , desec , digitalocean , directadmin , dnsimple , dnsmadeeasy , dnspod , do , domeneshop , duckdns , dynu , gandi , gehirn , godaddy , google , he , hetzner , infomaniak , inwx , ionos , linode , loopia , luadns , netcup , njalla , nsone , ovh , porkbun , rfc2136 , route53 , sakuracloud , standalone , transip , and vultr . Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf . PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. EMAIL= Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. Volume Mappings ( -v ) Volume Function /config All the config files including the webroot reside here. Miscellaneous Options Parameter Function Portainer notice {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it swag /bin/bash To monitor the logs of the container in realtime: docker logs -f swag Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/swag:latest Versions 08.12.22: - Revamp certbot init. 03.12.22: - Remove defunct cloudxns plugin. 22.11.22: - Pin acme to the same version as certbot. 22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves. 05.11.22: - Update acmedns plugin handling. 06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic. 05.10.22: - Use certbot file hooks instead of command line hooks 04.10.22: - Add godaddy and porkbun dns plugins. 03.10.22: - Add default_server back to default site conf's https listen. 22.09.22: - Added support for DO DNS validation. 22.09.22: - Added certbot-dns-acmedns for DNS01 validation. 20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 10.08.22: - Added support for Dynu DNS validation. 18.05.22: - Added support for Azure DNS validation. 09.04.22: - Added certbot-dns-loopia for DNS01 validation. 05.04.22: - Added support for standalone DNS validation. 28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config 09.01.22: - Added a fail2ban jail for nginx unauthorized 21.12.21: - Fixed issue with iptables not working as expected 30.11.21: - Move maxmind to a new mod 22.11.21: - Added support for Infomaniak DNS for certificate generation. 20.11.21: - Added support for dnspod validation. 15.11.21: - Added support for deSEC DNS for wildcard certificate generation. 26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus 23.10.21: - Fix Hurricane Electric (HE) DNS validation. 12.10.21: - Fix deprecated LE root cert check to fix failures when using STAGING=true , and failures in revoking. 06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps. 01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration 19.09.21: - Add an optional header to opt out of Google FLoC in ssl.conf . 17.09.21: - Mark SUBDOMAINS var as optional. 01.08.21: - Add support for ionos dns validation. 15.07.21: - Fix libmaxminddb issue due to upstream change. 07.07.21: - Rebase to alpine 3.14. 24.06.21: - Update default nginx conf folder. 28.05.21: - Existing users should update: authelia-server.conf - Use resolver.conf and patch for CVE-2021-32637 . 20.05.21: - Modify resolver.conf generation to detect and ignore ipv6. 14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for dhparams.pem per RFC7919 . Added worker_processes.conf , which sets the number of nginx workers, and resolver.conf , which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later. 21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method. 12.04.21: - Add php7-gmp and php7-pecl-mailparse. 12.04.21: - Add support for vultr dns validation. 14.03.21: - Add support for directadmin dns validation. 12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds. 10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users. 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years). 26.01.21: - Add support for hetzner dns validation. 20.01.21: - Add check for ZeroSSL EAB retrieval. 08.01.21: - Add support for getting certs from ZeroSSL via optional CERTPROVIDER env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled. 03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting 10.12.20: - Add support for njalla dns validation 09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation. 01.11.20: - Add support for netcup dns validation 29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy. 04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering. 20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme. 08.09.20: - Add php7-xsl. 01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs. 03.08.20: - Initial release.","title":"swag"},{"location":"images/docker-swag/#linuxserverswag","text":"SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.","title":"linuxserver/swag"},{"location":"images/docker-swag/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/swag:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-swag/#application-setup","text":"","title":"Application Setup"},{"location":"images/docker-swag/#validation-and-initial-setup","text":"Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.). If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. You can use our duckdns image to update your IP on duckdns.org. For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80 For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\" Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\" DuckDNS only supoprts two types of DNS validated certificates (not both at the same time): Certs that only cover your main subdomain (ie. yoursubdomain.duckdns.org , leave the SUBDOMAINS variable empty) Certs that cover sub-subdomains of your main subdomain (ie. *.yoursubdomain.duckdns.org , set the SUBDOMAINS variable to wildcard ) --cap-add=NET_ADMIN is required for fail2ban to modify iptables After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf ). Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.","title":"Validation and initial setup"},{"location":"images/docker-swag/#security-and-password-protection","text":"The container detects changes to url and subdomains, revokes existing certs and generates new ones during start. Per RFC7919 , the container is shipping ffdhe4096 as the dhparams.pem . If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it swag htpasswd -c /config/nginx/.htpasswd You can add multiple user:pass to .htpasswd . For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.","title":"Security and password protection"},{"location":"images/docker-swag/#site-config-and-reverse-proxy","text":"The default site config resides at /config/nginx/site-confs/default.conf . Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start. Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo . If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines If you wish to redirect http to https, you must expose port 80","title":"Site config and reverse proxy"},{"location":"images/docker-swag/#using-certs-in-other-containers","text":"This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc. To use these certs in other containers, do either of the following: (Easier) Mount the container's config folder in other containers (ie. -v /path-to-swag-config:/swag-ssl ) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/ (More secure) Mount the SWAG folder etc that resides under /config in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl ) and in the other containers, use the cert location /swag-ssl/letsencrypt/live// (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs) These certs include: cert.pem , chain.pem , fullchain.pem and privkey.pem , which are generated by Certbot and used by nginx and various other apps privkey.pfx , a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password) priv-fullchain-bundle.pem , a pem cert that bundles the private key and the fullchain, used by apps like ZNC","title":"Using certs in other containers"},{"location":"images/docker-swag/#using-fail2ban","text":"This container includes fail2ban set up with 5 jails by default: nginx-http-auth nginx-badbots nginx-botsearch nginx-deny nginx-unauthorized To enable or disable other jails, modify the file /config/fail2ban/jail.local To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local ) You can check which jails are active via docker exec -it swag fail2ban-client status You can check the status of a specific jail via docker exec -it swag fail2ban-client status You can unban an IP via docker exec -it swag fail2ban-client set unbanip A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands","title":"Using fail2ban"},{"location":"images/docker-swag/#updating-configs","text":"This container creates a number of configs for nginx, proxy samples, etc. Config updates are noted in the changelog but not automatically applied to your files. If you have modified a file with noted changes in the changelog: Keep your existing configs as is (not broken, don't fix) Review our repository commits and apply the new changes yourself Delete the modified config file with listed updates, restart the container, reapply your changes If you have NOT modified a file with noted changes in the changelog: Delete the config file with listed updates, restart the container Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not. You can check the new sample and adjust your active config as needed.","title":"Updating configs"},{"location":"images/docker-swag/#migration-from-the-old-linuxserverletsencrypt-image","text":"Please follow the instructions on this blog post .","title":"Migration from the old linuxserver/letsencrypt image"},{"location":"images/docker-swag/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-swag/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : swag : image : lscr.io/linuxserver/swag:latest container_name : swag cap_add : - NET_ADMIN environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - URL=yourdomain.url - VALIDATION=http - SUBDOMAINS=www, #optional - CERTPROVIDER= #optional - DNSPLUGIN=cloudflare #optional - PROPAGATION= #optional - EMAIL= #optional - ONLY_SUBDOMAINS=false #optional - EXTRA_DOMAINS= #optional - STAGING=false #optional volumes : - /path/to/appdata/config:/config ports : - 443:443 - 80:80 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-swag/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = swag \\ --cap-add = NET_ADMIN \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e URL = yourdomain.url \\ -e VALIDATION = http \\ -e SUBDOMAINS = www, ` #optional` \\ -e CERTPROVIDER = ` #optional` \\ -e DNSPLUGIN = cloudflare ` #optional` \\ -e PROPAGATION = ` #optional` \\ -e EMAIL = ` #optional` \\ -e ONLY_SUBDOMAINS = false ` #optional` \\ -e EXTRA_DOMAINS = ` #optional` \\ -e STAGING = false ` #optional` \\ -p 443 :443 \\ -p 80 :80 ` #optional` \\ -v /path/to/appdata/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/swag:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-swag/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-swag/#ports-p","text":"Parameter Function 443 Https port 80 Http port (required for http validation and http -> https redirect)","title":"Ports (-p)"},{"location":"images/docker-swag/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. URL=yourdomain.url Top url you have control over ( customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). VALIDATION=http Certbot validation method to use, options are http or dns ( dns method also requires DNSPLUGIN variable set). SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud . For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns validation only) CERTPROVIDER= Optionally define the cert provider. Set to zerossl for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in EMAIL env var). Otherwise defaults to Let's Encrypt. DNSPLUGIN=cloudflare Required if VALIDATION is set to dns . Options are acmedns , aliyun , azure , cloudflare , cpanel , desec , digitalocean , directadmin , dnsimple , dnsmadeeasy , dnspod , do , domeneshop , duckdns , dynu , gandi , gehirn , godaddy , google , he , hetzner , infomaniak , inwx , ionos , linode , loopia , luadns , netcup , njalla , nsone , ovh , porkbun , rfc2136 , route53 , sakuracloud , standalone , transip , and vultr . Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf . PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. EMAIL= Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes.","title":"Environment Variables (-e)"},{"location":"images/docker-swag/#volume-mappings-v","text":"Volume Function /config All the config files including the webroot reside here.","title":"Volume Mappings (-v)"},{"location":"images/docker-swag/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-swag/#portainer-notice","text":"{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.","title":"Portainer notice"},{"location":"images/docker-swag/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-swag/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-swag/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-swag/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-swag/#support-info","text":"Shell access whilst the container is running: docker exec -it swag /bin/bash To monitor the logs of the container in realtime: docker logs -f swag Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/swag:latest","title":"Support Info"},{"location":"images/docker-swag/#versions","text":"08.12.22: - Revamp certbot init. 03.12.22: - Remove defunct cloudxns plugin. 22.11.22: - Pin acme to the same version as certbot. 22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves. 05.11.22: - Update acmedns plugin handling. 06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic. 05.10.22: - Use certbot file hooks instead of command line hooks 04.10.22: - Add godaddy and porkbun dns plugins. 03.10.22: - Add default_server back to default site conf's https listen. 22.09.22: - Added support for DO DNS validation. 22.09.22: - Added certbot-dns-acmedns for DNS01 validation. 20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 10.08.22: - Added support for Dynu DNS validation. 18.05.22: - Added support for Azure DNS validation. 09.04.22: - Added certbot-dns-loopia for DNS01 validation. 05.04.22: - Added support for standalone DNS validation. 28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config 09.01.22: - Added a fail2ban jail for nginx unauthorized 21.12.21: - Fixed issue with iptables not working as expected 30.11.21: - Move maxmind to a new mod 22.11.21: - Added support for Infomaniak DNS for certificate generation. 20.11.21: - Added support for dnspod validation. 15.11.21: - Added support for deSEC DNS for wildcard certificate generation. 26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus 23.10.21: - Fix Hurricane Electric (HE) DNS validation. 12.10.21: - Fix deprecated LE root cert check to fix failures when using STAGING=true , and failures in revoking. 06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps. 01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration 19.09.21: - Add an optional header to opt out of Google FLoC in ssl.conf . 17.09.21: - Mark SUBDOMAINS var as optional. 01.08.21: - Add support for ionos dns validation. 15.07.21: - Fix libmaxminddb issue due to upstream change. 07.07.21: - Rebase to alpine 3.14. 24.06.21: - Update default nginx conf folder. 28.05.21: - Existing users should update: authelia-server.conf - Use resolver.conf and patch for CVE-2021-32637 . 20.05.21: - Modify resolver.conf generation to detect and ignore ipv6. 14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for dhparams.pem per RFC7919 . Added worker_processes.conf , which sets the number of nginx workers, and resolver.conf , which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later. 21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method. 12.04.21: - Add php7-gmp and php7-pecl-mailparse. 12.04.21: - Add support for vultr dns validation. 14.03.21: - Add support for directadmin dns validation. 12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds. 10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users. 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years). 26.01.21: - Add support for hetzner dns validation. 20.01.21: - Add check for ZeroSSL EAB retrieval. 08.01.21: - Add support for getting certs from ZeroSSL via optional CERTPROVIDER env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled. 03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting 10.12.20: - Add support for njalla dns validation 09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation. 01.11.20: - Add support for netcup dns validation 29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy. 04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering. 20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme. 08.09.20: - Add php7-xsl. 01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs. 03.08.20: - Initial release.","title":"Versions"},{"location":"images/docker-synclounge/","text":"linuxserver/synclounge Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/synclounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The web app and the server are both accessible at http://SERVERIP:8088 . Note: It is recommended to use http as the external proto with a reverse proxy due to https not working with external plex clients. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : synclounge : image : lscr.io/linuxserver/synclounge:latest container_name : synclounge environment : - TZ=Europe/London - AUTH_LIST=plexuser1,plexuser2,email1,machineid1 #optional - AUTOJOIN_ENABLED=false #optional - AUTOJOIN_ROOM=roomname #optional ports : - 8088:8088 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = synclounge \\ -e TZ = Europe/London \\ -e AUTH_LIST = plexuser1,plexuser2,email1,machineid1 ` #optional` \\ -e AUTOJOIN_ENABLED = false ` #optional` \\ -e AUTOJOIN_ROOM = roomname ` #optional` \\ -p 8088 :8088 \\ --restart unless-stopped \\ lscr.io/linuxserver/synclounge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8088 Web app and server port Environment Variables ( -e ) Env Function TZ=Europe/London Specify a timezone to use EG Europe/London AUTH_LIST=plexuser1,plexuser2,email1,machineid1 If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces. AUTOJOIN_ENABLED=false DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room ) - Set to true to let users autojoin the server and a room (specified by the AUTOJOIN_ROOM var). AUTOJOIN_ROOM=roomname DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room ) - Set the room name for auto joining (requires AUTOJOIN_ENABLED set to true ). Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it synclounge /bin/bash To monitor the logs of the container in realtime: docker logs -f synclounge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' synclounge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/synclounge:latest Versions 29.11.22: - Rebase to alpine 3.17, upgrade to s6v3. 19.09.22: - Rebase to alpine 3.15. 12.02.21: - Fix optional dependency builds in aarch64 image. 12.02.21: - Rebasing to alpine 3.13. 28.10.20: - Update to v4. Env vars EXTERNAL_URL , EXTERNAL_SERVER_PORT and AUTOJOIN_PASSWORD are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED and AUTOJOIN_ROOM are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room . If you are reverse proxying, do not forget to update your proxy settings ( here and here ) as the server port and addresses are changed. 11.10.20: - Pin builds to upstream commit 6aecc9bd while evaluating the breaking changes upstream. 27.09.20: - Updating the external repo endpoint. 01.06.20: - Rebasing to alpine 3.12. 11.05.20: - Initial Release.","title":"synclounge"},{"location":"images/docker-synclounge/#linuxserversynclounge","text":"Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.","title":"linuxserver/synclounge"},{"location":"images/docker-synclounge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/synclounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-synclounge/#application-setup","text":"The web app and the server are both accessible at http://SERVERIP:8088 . Note: It is recommended to use http as the external proto with a reverse proxy due to https not working with external plex clients.","title":"Application Setup"},{"location":"images/docker-synclounge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-synclounge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : synclounge : image : lscr.io/linuxserver/synclounge:latest container_name : synclounge environment : - TZ=Europe/London - AUTH_LIST=plexuser1,plexuser2,email1,machineid1 #optional - AUTOJOIN_ENABLED=false #optional - AUTOJOIN_ROOM=roomname #optional ports : - 8088:8088 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-synclounge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = synclounge \\ -e TZ = Europe/London \\ -e AUTH_LIST = plexuser1,plexuser2,email1,machineid1 ` #optional` \\ -e AUTOJOIN_ENABLED = false ` #optional` \\ -e AUTOJOIN_ROOM = roomname ` #optional` \\ -p 8088 :8088 \\ --restart unless-stopped \\ lscr.io/linuxserver/synclounge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-synclounge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-synclounge/#ports-p","text":"Parameter Function 8088 Web app and server port","title":"Ports (-p)"},{"location":"images/docker-synclounge/#environment-variables-e","text":"Env Function TZ=Europe/London Specify a timezone to use EG Europe/London AUTH_LIST=plexuser1,plexuser2,email1,machineid1 If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces. AUTOJOIN_ENABLED=false DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room ) - Set to true to let users autojoin the server and a room (specified by the AUTOJOIN_ROOM var). AUTOJOIN_ROOM=roomname DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room ) - Set the room name for auto joining (requires AUTOJOIN_ENABLED set to true ).","title":"Environment Variables (-e)"},{"location":"images/docker-synclounge/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-synclounge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-synclounge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-synclounge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-synclounge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-synclounge/#support-info","text":"Shell access whilst the container is running: docker exec -it synclounge /bin/bash To monitor the logs of the container in realtime: docker logs -f synclounge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' synclounge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/synclounge:latest","title":"Support Info"},{"location":"images/docker-synclounge/#versions","text":"29.11.22: - Rebase to alpine 3.17, upgrade to s6v3. 19.09.22: - Rebase to alpine 3.15. 12.02.21: - Fix optional dependency builds in aarch64 image. 12.02.21: - Rebasing to alpine 3.13. 28.10.20: - Update to v4. Env vars EXTERNAL_URL , EXTERNAL_SERVER_PORT and AUTOJOIN_PASSWORD are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED and AUTOJOIN_ROOM are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room . If you are reverse proxying, do not forget to update your proxy settings ( here and here ) as the server port and addresses are changed. 11.10.20: - Pin builds to upstream commit 6aecc9bd while evaluating the breaking changes upstream. 27.09.20: - Updating the external repo endpoint. 01.06.20: - Rebasing to alpine 3.12. 11.05.20: - Initial Release.","title":"Versions"},{"location":"images/docker-syncthing/","text":"linuxserver/syncthing Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/syncthing:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup **Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password for the webUI. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : syncthing : image : lscr.io/linuxserver/syncthing:latest container_name : syncthing hostname : syncthing #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/data1:/data1 - /path/to/data2:/data2 ports : - 8384:8384 - 22000:22000/tcp - 22000:22000/udp - 21027:21027/udp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = syncthing \\ --hostname = syncthing ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8384 :8384 \\ -p 22000 :22000/tcp \\ -p 22000 :22000/udp \\ -p 21027 :21027/udp \\ -v /path/to/appdata/config:/config \\ -v /path/to/data1:/data1 \\ -v /path/to/data2:/data2 \\ --restart unless-stopped \\ lscr.io/linuxserver/syncthing:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8384 Application WebUI 22000/tcp Listening port (TCP) 22000/udp Listening port (UDP) 21027/udp Protocol discovery Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. /data1 Data1 /data2 Data2 Miscellaneous Options Parameter Function --hostname= Optionally the hostname can be defined. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it syncthing /bin/bash To monitor the logs of the container in realtime: docker logs -f syncthing Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syncthing Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syncthing:latest Versions 17.08.22: - Build on alpine 3.16 for go 1.18). 03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18). 05.10.21: - Rebase to alpine 3.14. 12.05.21: - Remove sysctl parameter again 03.05.21: - Raise maximum UDP buffer size. 03.05.21: - Add port mapping for 22000/udp. 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 05.03.19: - Update Build process for v1.1.0 release. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 30.07.18: - Rebase to alpine 3.8 and use buildstage. 13.12.17: - Rebase to alpine 3.7. 25.10.17: - Add env for manual setting of umask. 29.07.17: - Simplify build structure as symlinks failing on > 0.14.32 28.05.17: - Rebase to alpine 3.6. 08.02.17: - Rebase to alpine 3.5. 01.11.16: - Switch to compiling latest version from git source. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 11.08.16: - Rebase to alpine linux. 18.12.15: - Initial testing / release (IronicBadger) 24.09.15: - Inital dev complete (Lonix)","title":"syncthing"},{"location":"images/docker-syncthing/#linuxserversyncthing","text":"Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.","title":"linuxserver/syncthing"},{"location":"images/docker-syncthing/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/syncthing:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-syncthing/#application-setup","text":"**Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password for the webUI.","title":"Application Setup"},{"location":"images/docker-syncthing/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-syncthing/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : syncthing : image : lscr.io/linuxserver/syncthing:latest container_name : syncthing hostname : syncthing #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/appdata/config:/config - /path/to/data1:/data1 - /path/to/data2:/data2 ports : - 8384:8384 - 22000:22000/tcp - 22000:22000/udp - 21027:21027/udp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-syncthing/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = syncthing \\ --hostname = syncthing ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8384 :8384 \\ -p 22000 :22000/tcp \\ -p 22000 :22000/udp \\ -p 21027 :21027/udp \\ -v /path/to/appdata/config:/config \\ -v /path/to/data1:/data1 \\ -v /path/to/data2:/data2 \\ --restart unless-stopped \\ lscr.io/linuxserver/syncthing:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-syncthing/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-syncthing/#ports-p","text":"Parameter Function 8384 Application WebUI 22000/tcp Listening port (TCP) 22000/udp Listening port (UDP) 21027/udp Protocol discovery","title":"Ports (-p)"},{"location":"images/docker-syncthing/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-syncthing/#volume-mappings-v","text":"Volume Function /config Configuration files. /data1 Data1 /data2 Data2","title":"Volume Mappings (-v)"},{"location":"images/docker-syncthing/#miscellaneous-options","text":"Parameter Function --hostname= Optionally the hostname can be defined.","title":"Miscellaneous Options"},{"location":"images/docker-syncthing/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-syncthing/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-syncthing/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-syncthing/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-syncthing/#support-info","text":"Shell access whilst the container is running: docker exec -it syncthing /bin/bash To monitor the logs of the container in realtime: docker logs -f syncthing Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syncthing Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syncthing:latest","title":"Support Info"},{"location":"images/docker-syncthing/#versions","text":"17.08.22: - Build on alpine 3.16 for go 1.18). 03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18). 05.10.21: - Rebase to alpine 3.14. 12.05.21: - Remove sysctl parameter again 03.05.21: - Raise maximum UDP buffer size. 03.05.21: - Add port mapping for 22000/udp. 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. 23.01.21: - Rebasing to alpine 3.13. 15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 05.03.19: - Update Build process for v1.1.0 release. 22.02.19: - Rebasing to alpine 3.9. 16.01.19: - Add pipeline logic and multi arch. 30.07.18: - Rebase to alpine 3.8 and use buildstage. 13.12.17: - Rebase to alpine 3.7. 25.10.17: - Add env for manual setting of umask. 29.07.17: - Simplify build structure as symlinks failing on > 0.14.32 28.05.17: - Rebase to alpine 3.6. 08.02.17: - Rebase to alpine 3.5. 01.11.16: - Switch to compiling latest version from git source. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 11.08.16: - Rebase to alpine linux. 18.12.15: - Initial testing / release (IronicBadger) 24.09.15: - Inital dev complete (Lonix)","title":"Versions"},{"location":"images/docker-syslog-ng/","text":"linuxserver/syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/syslog-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Edit /config/syslog-ng.conf to configure your logging sources and destinations. Note: As the application does not run as root you cannot listen on ports < 1024. The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl More info at syslog-ng . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : syslog-ng : image : lscr.io/linuxserver/syslog-ng:latest container_name : syslog-ng environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/log:/var/log #optional ports : - 514:5514/udp - 601:6601/tcp - 6514:6514/tcp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = syslog-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 514 :5514/udp \\ -p 601 :6601/tcp \\ -p 6514 :6514/tcp \\ -v /path/to/config:/config \\ -v /path/to/log:/var/log ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/syslog-ng:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 5514/udp Syslog UDP 6601/tcp Syslog TCP 6514/tcp Syslog TLS Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Stores config and application files /var/log Stores logs collected by the syslog-ng service Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it syslog-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f syslog-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syslog-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syslog-ng:latest Versions 30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support. 01.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.12.21: - Rebase to Alpine 3.15. 01.07.21: - Rebase to Alpine 3.14. 26.05.21: - Initial release.","title":"syslog-ng"},{"location":"images/docker-syslog-ng/#linuxserversyslog-ng","text":"syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.","title":"linuxserver/syslog-ng"},{"location":"images/docker-syslog-ng/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/syslog-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-syslog-ng/#application-setup","text":"Edit /config/syslog-ng.conf to configure your logging sources and destinations. Note: As the application does not run as root you cannot listen on ports < 1024. The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl More info at syslog-ng .","title":"Application Setup"},{"location":"images/docker-syslog-ng/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-syslog-ng/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : syslog-ng : image : lscr.io/linuxserver/syslog-ng:latest container_name : syslog-ng environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/log:/var/log #optional ports : - 514:5514/udp - 601:6601/tcp - 6514:6514/tcp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-syslog-ng/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = syslog-ng \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 514 :5514/udp \\ -p 601 :6601/tcp \\ -p 6514 :6514/tcp \\ -v /path/to/config:/config \\ -v /path/to/log:/var/log ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/syslog-ng:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-syslog-ng/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-syslog-ng/#ports-p","text":"Parameter Function 5514/udp Syslog UDP 6601/tcp Syslog TCP 6514/tcp Syslog TLS","title":"Ports (-p)"},{"location":"images/docker-syslog-ng/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-syslog-ng/#volume-mappings-v","text":"Volume Function /config Stores config and application files /var/log Stores logs collected by the syslog-ng service","title":"Volume Mappings (-v)"},{"location":"images/docker-syslog-ng/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-syslog-ng/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-syslog-ng/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-syslog-ng/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-syslog-ng/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-syslog-ng/#support-info","text":"Shell access whilst the container is running: docker exec -it syslog-ng /bin/bash To monitor the logs of the container in realtime: docker logs -f syslog-ng Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syslog-ng Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syslog-ng:latest","title":"Support Info"},{"location":"images/docker-syslog-ng/#versions","text":"30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support. 01.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.12.21: - Rebase to Alpine 3.15. 01.07.21: - Rebase to Alpine 3.14. 26.05.21: - Initial release.","title":"Versions"},{"location":"images/docker-taisun/","text":"DEPRECATION NOTICE This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/ linuxserver/taisun Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to: Deploy and manage web based virtual desktops. Deploy Taisun specific stacks of applications Browse available images on popular Docker repositories Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop Spinup a developer container based on popular frameworks and work from a web based IDE Single click remote server access to Taisun and your Docker applications Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Application Setup The webui is at http://localhost:3000, for more information on usage see here . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2\" services : taisun : image : linuxserver/taisun container_name : taisun network_mode : bridge volumes : - /var/run/docker.sock:/var/run/docker.sock ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = taisun \\ -p 3000 :3000 \\ -v /var/run/docker.sock:/var/run/docker.sock \\ --restart unless-stopped \\ lscr.io/linuxserver/taisun Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Taisun WebUI. Environment Variables ( -e ) Env Function Volume Mappings ( -v ) Volume Function /var/run/docker.sock Docker Socket on the system Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it taisun /bin/bash To monitor the logs of the container in realtime: docker logs -f taisun Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' taisun Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/taisun Versions 02.02.22: - Deprecate. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 20.07.19: - Build compose bins from source, use minimal docker install from repos. 28.06.19: - Rebasing to alpine 3.10. 30.03.19: - Updating docker-compose build dependancies for musl libc. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 13.02.19: - Initial release.","title":"taisun"},{"location":"images/docker-taisun/#deprecation-notice","text":"This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/","title":"DEPRECATION NOTICE"},{"location":"images/docker-taisun/#linuxservertaisun","text":"Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to: Deploy and manage web based virtual desktops. Deploy Taisun specific stacks of applications Browse available images on popular Docker repositories Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop Spinup a developer container based on popular frameworks and work from a web based IDE Single click remote server access to Taisun and your Docker applications","title":"linuxserver/taisun"},{"location":"images/docker-taisun/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-taisun/#application-setup","text":"The webui is at http://localhost:3000, for more information on usage see here .","title":"Application Setup"},{"location":"images/docker-taisun/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-taisun/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2\" services : taisun : image : linuxserver/taisun container_name : taisun network_mode : bridge volumes : - /var/run/docker.sock:/var/run/docker.sock ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-taisun/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = taisun \\ -p 3000 :3000 \\ -v /var/run/docker.sock:/var/run/docker.sock \\ --restart unless-stopped \\ lscr.io/linuxserver/taisun","title":"docker cli (click here for more info)"},{"location":"images/docker-taisun/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-taisun/#ports-p","text":"Parameter Function 3000 Taisun WebUI.","title":"Ports (-p)"},{"location":"images/docker-taisun/#environment-variables-e","text":"Env Function","title":"Environment Variables (-e)"},{"location":"images/docker-taisun/#volume-mappings-v","text":"Volume Function /var/run/docker.sock Docker Socket on the system","title":"Volume Mappings (-v)"},{"location":"images/docker-taisun/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-taisun/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-taisun/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-taisun/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-taisun/#support-info","text":"Shell access whilst the container is running: docker exec -it taisun /bin/bash To monitor the logs of the container in realtime: docker logs -f taisun Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' taisun Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/taisun","title":"Support Info"},{"location":"images/docker-taisun/#versions","text":"02.02.22: - Deprecate. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 20.07.19: - Build compose bins from source, use minimal docker install from repos. 28.06.19: - Rebasing to alpine 3.10. 30.03.19: - Updating docker-compose build dependancies for musl libc. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 13.02.19: - Initial release.","title":"Versions"},{"location":"images/docker-tautulli/","text":"linuxserver/tautulli Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tautulli:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Tautulli releases develop \u2705 Built at head of Tautulli nightly branch Application Setup Access the webui at :8181 , for more information check out Tautulli . To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server , turn on Show Advanced and set the Logs Folder to the folder you mapped. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : tautulli : image : lscr.io/linuxserver/tautulli:latest container_name : tautulli environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 8181:8181 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = tautulli \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8181 :8181 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/tautulli:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8181 WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Contains tautulli config and database. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it tautulli /bin/bash To monitor the logs of the container in realtime: docker logs -f tautulli Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tautulli Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tautulli:latest Versions 15.12.22: - Rebase master branch to Alpine 3.17. 04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 10.01.22: - Rebase to Alpine 3.15. 11.07.21: - Add curl package. 23.01.21: - Rebasing to alpine 3.13. 11.07.20: - Add py3-openssl. 05.06.20: - Rebasing to alpine 3.12. Rework to python3. 12.04.20: - Added mock from pip and donate links. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 26.01.19: - Add pipeline logic and multi arch. 23.10.18: - Update plex logs info in readm. 16.08.18: - Rebase to alpine 3.8. 10.03.18: - Rebrand to tautulli. 12.12.17: - Rebase to alpine 3.7. 21.07.17: - Internal git pull instead of at runtime. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 25.05.17: - Rebase to alpine 3.6. 20.04.17: - Add pycryptodomex pip package. 07.02.17: - Rebase to alpine 3.5. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 16.07.15: - Inital Release.","title":"tautulli"},{"location":"images/docker-tautulli/#linuxservertautulli","text":"Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.","title":"linuxserver/tautulli"},{"location":"images/docker-tautulli/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tautulli:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-tautulli/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable Tautulli releases develop \u2705 Built at head of Tautulli nightly branch","title":"Version Tags"},{"location":"images/docker-tautulli/#application-setup","text":"Access the webui at :8181 , for more information check out Tautulli . To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server , turn on Show Advanced and set the Logs Folder to the folder you mapped.","title":"Application Setup"},{"location":"images/docker-tautulli/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-tautulli/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : tautulli : image : lscr.io/linuxserver/tautulli:latest container_name : tautulli environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 8181:8181 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-tautulli/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = tautulli \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 8181 :8181 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/tautulli:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-tautulli/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-tautulli/#ports-p","text":"Parameter Function 8181 WebUI","title":"Ports (-p)"},{"location":"images/docker-tautulli/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-tautulli/#volume-mappings-v","text":"Volume Function /config Contains tautulli config and database.","title":"Volume Mappings (-v)"},{"location":"images/docker-tautulli/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-tautulli/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-tautulli/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-tautulli/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-tautulli/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-tautulli/#support-info","text":"Shell access whilst the container is running: docker exec -it tautulli /bin/bash To monitor the logs of the container in realtime: docker logs -f tautulli Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tautulli Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tautulli:latest","title":"Support Info"},{"location":"images/docker-tautulli/#versions","text":"15.12.22: - Rebase master branch to Alpine 3.17. 04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3. 10.01.22: - Rebase to Alpine 3.15. 11.07.21: - Add curl package. 23.01.21: - Rebasing to alpine 3.13. 11.07.20: - Add py3-openssl. 05.06.20: - Rebasing to alpine 3.12. Rework to python3. 12.04.20: - Added mock from pip and donate links. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 26.01.19: - Add pipeline logic and multi arch. 23.10.18: - Update plex logs info in readm. 16.08.18: - Rebase to alpine 3.8. 10.03.18: - Rebrand to tautulli. 12.12.17: - Rebase to alpine 3.7. 21.07.17: - Internal git pull instead of at runtime. 12.07.17: - Add inspect commands to README, move to jenkins build and push. 25.05.17: - Rebase to alpine 3.6. 20.04.17: - Add pycryptodomex pip package. 07.02.17: - Rebase to alpine 3.5. 09.09.16: - Add layer badges to README. 27.08.16: - Add badges to README. 08.08.16: - Rebase to alpine linux. 16.07.15: - Inital Release.","title":"Versions"},{"location":"images/docker-tester/","text":"linuxserver/tester This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : tester : image : lscr.io/linuxserver/tester:latest container_name : tester environment : - URL=http://google.com ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = tester \\ -e URL = http://google.com \\ -p 3000 :3000 \\ --restart unless-stopped \\ lscr.io/linuxserver/tester:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 WebUI Environment Variables ( -e ) Env Function URL=http://google.com Specify an endpoint, the container will automatically determine the correct protocol and program to use Volume Mappings ( -v ) Volume Function Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it tester /bin/bash To monitor the logs of the container in realtime: docker logs -f tester Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tester Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tester:latest Versions 16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay. 24.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.04.20: - Initial release.","title":"tester"},{"location":"images/docker-tester/#linuxservertester","text":"This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint","title":"linuxserver/tester"},{"location":"images/docker-tester/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u274c armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-tester/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-tester/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : tester : image : lscr.io/linuxserver/tester:latest container_name : tester environment : - URL=http://google.com ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-tester/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = tester \\ -e URL = http://google.com \\ -p 3000 :3000 \\ --restart unless-stopped \\ lscr.io/linuxserver/tester:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-tester/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-tester/#ports-p","text":"Parameter Function 3000 WebUI","title":"Ports (-p)"},{"location":"images/docker-tester/#environment-variables-e","text":"Env Function URL=http://google.com Specify an endpoint, the container will automatically determine the correct protocol and program to use","title":"Environment Variables (-e)"},{"location":"images/docker-tester/#volume-mappings-v","text":"Volume Function","title":"Volume Mappings (-v)"},{"location":"images/docker-tester/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-tester/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-tester/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-tester/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-tester/#support-info","text":"Shell access whilst the container is running: docker exec -it tester /bin/bash To monitor the logs of the container in realtime: docker logs -f tester Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tester Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tester:latest","title":"Support Info"},{"location":"images/docker-tester/#versions","text":"16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay. 24.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 18.04.20: - Initial release.","title":"Versions"},{"location":"images/docker-thelounge/","text":"linuxserver/thelounge Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/thelounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. next \u2705 Next Pre-Releases. nightly \u2705 Nightly images from commits in master. Application Setup When the application first runs, it will populate its /config Stop the container Now from the host, edit /config/config.js , wherever you've mapped it In most cases you want the value public: false to allow named users only Setting the two prefetch values to true improves usability, but uses more storage Once you have the configuration you want, save it and start the container again For each user, run the command docker exec -it thelounge s6-setuidgid abc thelounge add You will be prompted to enter a password that will not be echoed. Saving logs to disk is the default, this consumes more space but allows scrollback. To log in to the application, browse to http://:9000 You should now be prompted for a username and password on the webinterface. Once logged in, you can add an IRC network. Some defaults are preset for Freenode Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : thelounge : image : lscr.io/linuxserver/thelounge:latest container_name : thelounge environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 9000:9000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = thelounge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9000 :9000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/thelounge:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9000 Application WebUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Configuration files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it thelounge /bin/bash To monitor the logs of the container in realtime: docker logs -f thelounge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' thelounge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/thelounge:latest Versions 18.12.22: - Rebasing master to alpine 3.17. 24.10.22: - Fix sqlite3 build. 12.04.22: - Install from source using yarn. 11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 15.05.19: - Update Arm variant images to build sqlite3 module. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.08.18: - Use global install, simplifies adding users. 20.08.18: - Rebase to alpine 3.8. 06.01.18: - Rebase to alpine 3.7. 26.05.17: - Rebase to alpine 3.6. 06.02.17: - Rebase to alpine 3.5. 14.10.16: - Bump to pickup 2.10 release. 14.10.16: - Add version layer information. 11.09.16: - Add layer badges to README. 31.08.16: - Initial Release.","title":"thelounge"},{"location":"images/docker-thelounge/#linuxserverthelounge","text":"Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.","title":"linuxserver/thelounge"},{"location":"images/docker-thelounge/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/thelounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-thelounge/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases. next \u2705 Next Pre-Releases. nightly \u2705 Nightly images from commits in master.","title":"Version Tags"},{"location":"images/docker-thelounge/#application-setup","text":"When the application first runs, it will populate its /config Stop the container Now from the host, edit /config/config.js , wherever you've mapped it In most cases you want the value public: false to allow named users only Setting the two prefetch values to true improves usability, but uses more storage Once you have the configuration you want, save it and start the container again For each user, run the command docker exec -it thelounge s6-setuidgid abc thelounge add You will be prompted to enter a password that will not be echoed. Saving logs to disk is the default, this consumes more space but allows scrollback. To log in to the application, browse to http://:9000 You should now be prompted for a username and password on the webinterface. Once logged in, you can add an IRC network. Some defaults are preset for Freenode","title":"Application Setup"},{"location":"images/docker-thelounge/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-thelounge/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : thelounge : image : lscr.io/linuxserver/thelounge:latest container_name : thelounge environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 9000:9000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-thelounge/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = thelounge \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 9000 :9000 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/thelounge:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-thelounge/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-thelounge/#ports-p","text":"Parameter Function 9000 Application WebUI","title":"Ports (-p)"},{"location":"images/docker-thelounge/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-thelounge/#volume-mappings-v","text":"Volume Function /config Configuration files.","title":"Volume Mappings (-v)"},{"location":"images/docker-thelounge/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-thelounge/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-thelounge/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-thelounge/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-thelounge/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-thelounge/#support-info","text":"Shell access whilst the container is running: docker exec -it thelounge /bin/bash To monitor the logs of the container in realtime: docker logs -f thelounge Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' thelounge Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/thelounge:latest","title":"Support Info"},{"location":"images/docker-thelounge/#versions","text":"18.12.22: - Rebasing master to alpine 3.17. 24.10.22: - Fix sqlite3 build. 12.04.22: - Install from source using yarn. 11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm. 23.01.21: - Rebasing to alpine 3.13. 02.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 15.05.19: - Update Arm variant images to build sqlite3 module. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 25.08.18: - Use global install, simplifies adding users. 20.08.18: - Rebase to alpine 3.8. 06.01.18: - Rebase to alpine 3.7. 26.05.17: - Rebase to alpine 3.6. 06.02.17: - Rebase to alpine 3.5. 14.10.16: - Bump to pickup 2.10 release. 14.10.16: - Add version layer information. 11.09.16: - Add layer badges to README. 31.08.16: - Initial Release.","title":"Versions"},{"location":"images/docker-transmission/","text":"linuxserver/transmission 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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/transmission:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved. If you choose to use transmission-web-control as your default UI, just note that the origional Web UI will not be available to you despite the button being present. Securing the webui with a username/password. Use the USER and PASS variables in docker run/create/compose to set authentication. Do not manually edit the settings.json to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor. Updating Blocklists Automatically This requires \"blocklist-enabled\": true, to be set. By setting this to true, it is assumed you have also populated blocklist-url with a valid block list. The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon. The automatic update will run once a day at 3am local server time. Using whitelist Use WHITELIST to enable a list of ip as whitelist. This enable support for rpc-whitelist . When WHITELIST is empty support for whitelist is disabled. Use HOST_WHITELIST to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist . When HOST_WHITELIST is empty support for host-whitelist is disabled. Use alternative Transmission torrent ports Use PEERPORT to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : transmission : image : lscr.io/linuxserver/transmission:latest container_name : transmission environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - TRANSMISSION_WEB_HOME=/combustion-release/ #optional - USER=username #optional - PASS=password #optional - WHITELIST=iplist #optional - PEERPORT=peerport #optional - HOST_WHITELIST=dnsname list #optional volumes : - /path/to/data:/config - /path/to/downloads:/downloads - /path/to/watch/folder:/watch ports : - 9091:9091 - 51413:51413 - 51413:51413/udp restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = transmission \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e TRANSMISSION_WEB_HOME = /combustion-release/ ` #optional` \\ -e USER = username ` #optional` \\ -e PASS = password ` #optional` \\ -e WHITELIST = iplist ` #optional` \\ -e PEERPORT = peerport ` #optional` \\ -e HOST_WHITELIST = dnsname list ` #optional` \\ -p 9091 :9091 \\ -p 51413 :51413 \\ -p 51413 :51413/udp \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/watch/folder:/watch \\ --restart unless-stopped \\ lscr.io/linuxserver/transmission:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9091 WebUI 51413 Torrent Port TCP 51413/udp Torrent Port UDP Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. TRANSMISSION_WEB_HOME=/combustion-release/ Specify an alternative UI options are /combustion-release/ , /transmission-web-control/ , /kettu/ , /flood-for-transmission/ , and /transmissionic/ . USER=username Specify an optional username for the interface PASS=password Specify an optional password for the interface WHITELIST=iplist Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting. PEERPORT=peerport Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting. HOST_WHITELIST=dnsname list Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting. Volume Mappings ( -v ) Volume Function /config Where transmission should store config files and logs. /downloads Local path for downloads. /watch Watch folder for torrent files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it transmission /bin/bash To monitor the logs of the container in realtime: docker logs -f transmission Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' transmission Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/transmission:latest Versions 05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package. 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 03.04.22: - Add Transmissionic as a UI option. 21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium 09.07.21: - Wait for the transmission-daemon termination after a caught sigterm. 06.03.21: - Add Flood for Transmission as a UI option. 23.01.21: - Rebasing to alpine 3.13. 02.11.20: - Add ca-certificates package to allow connecting to https trackers. 02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3. 11.05.20: - Remove unnecessary chmod (remnant of previous change). 28.04.20: - Use transmission-remote to update blocklist. 30.03.20: - Internalize blocklist-update.sh. 29.03.20: - Update auth info in readme. 19.12.19: - Rebasing to alpine 3.11. 04.10.19: - Update package label. 21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set. 19.07.19: - Send SIGTERM in blocklist update to properly close pid. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils. 22.02.19: - Catch term and clean exit. 07.02.19: - Add pipeline logic and multi arch. 15.08.18: - Rebase to alpine linux 3.8. 12.02.18: - Pull transmission from edge repo. 10.01.18: - Rebase to alpine linux 3.7. 25.07.17: - Add rsync package. 27.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 15.01.17: - Add p7zip, tar, unrar, and unzip packages. 16.10.16: - Blocklist autoupdate with optional authentication. 14.10.16: - Add version layer informationE. 23.09.16: - Add information about securing the webui to README. 21.09.16: - Add curl package. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 09.08.16: - Rebase to alpine linux. 06.12.15: - Separate mapping for watch folder. 16.11.15: - Initial Release.","title":"transmission"},{"location":"images/docker-transmission/#linuxservertransmission","text":"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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.","title":"linuxserver/transmission"},{"location":"images/docker-transmission/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/transmission:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-transmission/#application-setup","text":"Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved. If you choose to use transmission-web-control as your default UI, just note that the origional Web UI will not be available to you despite the button being present.","title":"Application Setup"},{"location":"images/docker-transmission/#securing-the-webui-with-a-usernamepassword","text":"Use the USER and PASS variables in docker run/create/compose to set authentication. Do not manually edit the settings.json to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.","title":"Securing the webui with a username/password."},{"location":"images/docker-transmission/#updating-blocklists-automatically","text":"This requires \"blocklist-enabled\": true, to be set. By setting this to true, it is assumed you have also populated blocklist-url with a valid block list. The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon. The automatic update will run once a day at 3am local server time.","title":"Updating Blocklists Automatically"},{"location":"images/docker-transmission/#using-whitelist","text":"Use WHITELIST to enable a list of ip as whitelist. This enable support for rpc-whitelist . When WHITELIST is empty support for whitelist is disabled. Use HOST_WHITELIST to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist . When HOST_WHITELIST is empty support for host-whitelist is disabled.","title":"Using whitelist"},{"location":"images/docker-transmission/#use-alternative-transmission-torrent-ports","text":"Use PEERPORT to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.","title":"Use alternative Transmission torrent ports"},{"location":"images/docker-transmission/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-transmission/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : transmission : image : lscr.io/linuxserver/transmission:latest container_name : transmission environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - TRANSMISSION_WEB_HOME=/combustion-release/ #optional - USER=username #optional - PASS=password #optional - WHITELIST=iplist #optional - PEERPORT=peerport #optional - HOST_WHITELIST=dnsname list #optional volumes : - /path/to/data:/config - /path/to/downloads:/downloads - /path/to/watch/folder:/watch ports : - 9091:9091 - 51413:51413 - 51413:51413/udp restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-transmission/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = transmission \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e TRANSMISSION_WEB_HOME = /combustion-release/ ` #optional` \\ -e USER = username ` #optional` \\ -e PASS = password ` #optional` \\ -e WHITELIST = iplist ` #optional` \\ -e PEERPORT = peerport ` #optional` \\ -e HOST_WHITELIST = dnsname list ` #optional` \\ -p 9091 :9091 \\ -p 51413 :51413 \\ -p 51413 :51413/udp \\ -v /path/to/data:/config \\ -v /path/to/downloads:/downloads \\ -v /path/to/watch/folder:/watch \\ --restart unless-stopped \\ lscr.io/linuxserver/transmission:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-transmission/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-transmission/#ports-p","text":"Parameter Function 9091 WebUI 51413 Torrent Port TCP 51413/udp Torrent Port UDP","title":"Ports (-p)"},{"location":"images/docker-transmission/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. TRANSMISSION_WEB_HOME=/combustion-release/ Specify an alternative UI options are /combustion-release/ , /transmission-web-control/ , /kettu/ , /flood-for-transmission/ , and /transmissionic/ . USER=username Specify an optional username for the interface PASS=password Specify an optional password for the interface WHITELIST=iplist Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting. PEERPORT=peerport Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting. HOST_WHITELIST=dnsname list Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting.","title":"Environment Variables (-e)"},{"location":"images/docker-transmission/#volume-mappings-v","text":"Volume Function /config Where transmission should store config files and logs. /downloads Local path for downloads. /watch Watch folder for torrent files.","title":"Volume Mappings (-v)"},{"location":"images/docker-transmission/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-transmission/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-transmission/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-transmission/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-transmission/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-transmission/#support-info","text":"Shell access whilst the container is running: docker exec -it transmission /bin/bash To monitor the logs of the container in realtime: docker logs -f transmission Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' transmission Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/transmission:latest","title":"Support Info"},{"location":"images/docker-transmission/#versions","text":"05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package. 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 12.08.22: - Bump unrar to 6.1.7. 03.04.22: - Add Transmissionic as a UI option. 21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium 09.07.21: - Wait for the transmission-daemon termination after a caught sigterm. 06.03.21: - Add Flood for Transmission as a UI option. 23.01.21: - Rebasing to alpine 3.13. 02.11.20: - Add ca-certificates package to allow connecting to https trackers. 02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3. 11.05.20: - Remove unnecessary chmod (remnant of previous change). 28.04.20: - Use transmission-remote to update blocklist. 30.03.20: - Internalize blocklist-update.sh. 29.03.20: - Update auth info in readme. 19.12.19: - Rebasing to alpine 3.11. 04.10.19: - Update package label. 21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set. 19.07.19: - Send SIGTERM in blocklist update to properly close pid. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils. 22.02.19: - Catch term and clean exit. 07.02.19: - Add pipeline logic and multi arch. 15.08.18: - Rebase to alpine linux 3.8. 12.02.18: - Pull transmission from edge repo. 10.01.18: - Rebase to alpine linux 3.7. 25.07.17: - Add rsync package. 27.05.17: - Rebase to alpine linux 3.6. 06.02.17: - Rebase to alpine linux 3.5. 15.01.17: - Add p7zip, tar, unrar, and unzip packages. 16.10.16: - Blocklist autoupdate with optional authentication. 14.10.16: - Add version layer informationE. 23.09.16: - Add information about securing the webui to README. 21.09.16: - Add curl package. 09.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 09.08.16: - Rebase to alpine linux. 06.12.15: - Separate mapping for watch folder. 16.11.15: - Initial Release.","title":"Versions"},{"location":"images/docker-tvheadend/","text":"linuxserver/tvheadend Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML). Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tvheadend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard. Stable First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services. After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG. Latest The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend. Configuring XMLTV grabber To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added. docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure Now follow the onscreen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber. If you allready have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it. Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --> Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field. /usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\" Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file. FFmpeg FFmpeg is installed in /usr/bin/ in case you need to use it with pipe. EPG XML file If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml. For advanced setup of tvheadend, go to [Tvheadend][appurl] Picons We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. You need to enable minimum advanced view level to see the picons options. Additional runtime parameters In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : tvheadend : image : lscr.io/linuxserver/tvheadend:latest container_name : tvheadend environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS= #optional volumes : - /path/to/data:/config - /path/to/recordings:/recordings ports : - 9981:9981 - 9982:9982 devices : - /dev/dri:/dev/dri #optional - /dev/dvb:/dev/dvb #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = tvheadend \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = ` #optional` \\ -p 9981 :9981 \\ -p 9982 :9982 \\ -v /path/to/data:/config \\ -v /path/to/recordings:/recordings \\ --device /dev/dri:/dev/dri ` #optional` \\ --device /dev/dvb:/dev/dvb ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/tvheadend:latest Host vs. Bridge If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250 and a UDP port of 1900 which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stabilty problems. These can be solved by giving tvheadend its own IP using macvlan. Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 9981 WebUI 9982 HTSP server port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Optionally specify additional arguments to be passed. See Additional runtime parameters. Volume Mappings ( -v ) Volume Function /config Where TVHeadend show store it's config files. /recordings Where you want the PVR to store recordings. Device Mappings ( --device ) Parameter Function /dev/dri Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). /dev/dvb Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it tvheadend /bin/bash To monitor the logs of the container in realtime: docker logs -f tvheadend Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tvheadend Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tvheadend:latest Versions 31.08.22: - Update sample env vars and how RUN_OPTS are handled. 19.08.22: - Switch to new picons builder. 16.04.22: - Added URL XMLTV grabber. 05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv. 11.05.21: - Added Intel iHD driver support. 02.06.20: - Update to Alpine 3.12. 27.12.19: - Add requests and perl-json-xs package. 27.12.19: - Update to Alpine 3.11. 02.10.19: - Improve permission fixing on render & dvb devices. 18.08.19: - Add AMD drivers. 02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb. 28.06.19: - Rebasing to alpine 3.10. 27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.03.19: - Bump xmltv to 0.6.1. 28.02.19: - add perl-lwp-useragent-determined. 17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend. 14.02.19: - Add picons path to config. 15.01.19: - Add pipeline logic and multi arch. 12.09.18: - Rebase to alpine 3.8 and use buildstage type build. 21.04.18: - Add JSON::XS Perl package for grab_tv_huro. 24.03.18: - Add dvbcsa package. 04.03.18: - Use sourceforge master rather than mirror for xmltv. 22.02.18: - Add lost libva-intel-driver. 21.02.18: - Fix wrong version of iconv used. 18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options. 04.01.18: - Deprecate cpu_core routine lack of scaling. 11.12.17: - Rebase to alpine 3.7, linting fixes. 02.09.17: - Add codec dependencies. 13.07.17: - Increase uniformity across all archs. 08.07.17: - Update README with full path for comskip. 02.07.17: - Move to one branch for all 4.2 releases. 27.05.17: - Rebase to alpine 3.6. 01.05.17: - Update to tvheadend 4.2.1 stable. 18.04.17: - Use repo version of gnu-libiconv rather than compiling. 09.04.17: - Chain cpanm installs in one block and use --installdeps. 09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69. 07.02.17: - Add variable to add additional runtime paramters. 05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs. 14.11.16: - Add picons from picons.xyz to /picons folder and add info to README. 22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README. 18.09.16: - Update XMLTV to 0.5.68 and update README. 10.09.16: - Add layer badges to README. 05.09.16: - Initial Release.","title":"tvheadend"},{"location":"images/docker-tvheadend/#linuxservertvheadend","text":"Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).","title":"linuxserver/tvheadend"},{"location":"images/docker-tvheadend/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/tvheadend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-tvheadend/#application-setup","text":"The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard. Stable First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services. After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG. Latest The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend. Configuring XMLTV grabber To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added. docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure Now follow the onscreen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber. If you allready have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it. Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --> Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field. /usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\" Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file. FFmpeg FFmpeg is installed in /usr/bin/ in case you need to use it with pipe. EPG XML file If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml. For advanced setup of tvheadend, go to [Tvheadend][appurl] Picons We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. You need to enable minimum advanced view level to see the picons options.","title":"Application Setup"},{"location":"images/docker-tvheadend/#additional-runtime-parameters","text":"In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.","title":"Additional runtime parameters"},{"location":"images/docker-tvheadend/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-tvheadend/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : tvheadend : image : lscr.io/linuxserver/tvheadend:latest container_name : tvheadend environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - RUN_OPTS= #optional volumes : - /path/to/data:/config - /path/to/recordings:/recordings ports : - 9981:9981 - 9982:9982 devices : - /dev/dri:/dev/dri #optional - /dev/dvb:/dev/dvb #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-tvheadend/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = tvheadend \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e RUN_OPTS = ` #optional` \\ -p 9981 :9981 \\ -p 9982 :9982 \\ -v /path/to/data:/config \\ -v /path/to/recordings:/recordings \\ --device /dev/dri:/dev/dri ` #optional` \\ --device /dev/dvb:/dev/dvb ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/tvheadend:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-tvheadend/#host-vs-bridge","text":"If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250 and a UDP port of 1900 which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stabilty problems. These can be solved by giving tvheadend its own IP using macvlan.","title":"Host vs. Bridge"},{"location":"images/docker-tvheadend/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-tvheadend/#ports-p","text":"Parameter Function 9981 WebUI 9982 HTSP server port.","title":"Ports (-p)"},{"location":"images/docker-tvheadend/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Optionally specify additional arguments to be passed. See Additional runtime parameters.","title":"Environment Variables (-e)"},{"location":"images/docker-tvheadend/#volume-mappings-v","text":"Volume Function /config Where TVHeadend show store it's config files. /recordings Where you want the PVR to store recordings.","title":"Volume Mappings (-v)"},{"location":"images/docker-tvheadend/#device-mappings-device","text":"Parameter Function /dev/dri Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). /dev/dvb Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out.","title":"Device Mappings (--device)"},{"location":"images/docker-tvheadend/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-tvheadend/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-tvheadend/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-tvheadend/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-tvheadend/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-tvheadend/#support-info","text":"Shell access whilst the container is running: docker exec -it tvheadend /bin/bash To monitor the logs of the container in realtime: docker logs -f tvheadend Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tvheadend Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tvheadend:latest","title":"Support Info"},{"location":"images/docker-tvheadend/#versions","text":"31.08.22: - Update sample env vars and how RUN_OPTS are handled. 19.08.22: - Switch to new picons builder. 16.04.22: - Added URL XMLTV grabber. 05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv. 11.05.21: - Added Intel iHD driver support. 02.06.20: - Update to Alpine 3.12. 27.12.19: - Add requests and perl-json-xs package. 27.12.19: - Update to Alpine 3.11. 02.10.19: - Improve permission fixing on render & dvb devices. 18.08.19: - Add AMD drivers. 02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb. 28.06.19: - Rebasing to alpine 3.10. 27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 01.03.19: - Bump xmltv to 0.6.1. 28.02.19: - add perl-lwp-useragent-determined. 17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend. 14.02.19: - Add picons path to config. 15.01.19: - Add pipeline logic and multi arch. 12.09.18: - Rebase to alpine 3.8 and use buildstage type build. 21.04.18: - Add JSON::XS Perl package for grab_tv_huro. 24.03.18: - Add dvbcsa package. 04.03.18: - Use sourceforge master rather than mirror for xmltv. 22.02.18: - Add lost libva-intel-driver. 21.02.18: - Fix wrong version of iconv used. 18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options. 04.01.18: - Deprecate cpu_core routine lack of scaling. 11.12.17: - Rebase to alpine 3.7, linting fixes. 02.09.17: - Add codec dependencies. 13.07.17: - Increase uniformity across all archs. 08.07.17: - Update README with full path for comskip. 02.07.17: - Move to one branch for all 4.2 releases. 27.05.17: - Rebase to alpine 3.6. 01.05.17: - Update to tvheadend 4.2.1 stable. 18.04.17: - Use repo version of gnu-libiconv rather than compiling. 09.04.17: - Chain cpanm installs in one block and use --installdeps. 09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69. 07.02.17: - Add variable to add additional runtime paramters. 05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs. 14.11.16: - Add picons from picons.xyz to /picons folder and add info to README. 22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README. 18.09.16: - Update XMLTV to 0.5.68 and update README. 10.09.16: - Add layer badges to README. 05.09.16: - Initial Release.","title":"Versions"},{"location":"images/docker-ubooquity/","text":"linuxserver/ubooquity Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ubooquity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below. Access the admin page at http://:2203/ubooquity/admin and set a password. Then you can access the webui at http://:2202/ubooquity/ This container will automatically scan your files at startup. MAXMEM The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That\u2019s when you get java.lang.OutOfMemoryError: Java heap space errors. You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB ) If no value is set it will default to 512MB. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : ubooquity : image : lscr.io/linuxserver/ubooquity:latest container_name : ubooquity environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MAXMEM= volumes : - :/config - :/books - :/comics - :/files ports : - 2202:2202 - 2203:2203 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = ubooquity \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MAXMEM = \\ -p 2202 :2202 \\ -p 2203 :2203 \\ -v :/config \\ -v :/books \\ -v :/comics \\ -v :/files \\ --restart unless-stopped \\ lscr.io/linuxserver/ubooquity:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 2202 The library port. 2203 The admin port. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAXMEM= To set the maximum memory. ( ex: set '1024' for 1GB ) Volume Mappings ( -v ) Volume Function /config Config files and database for ubooquity. /books Location of books. /comics Location of comics. /files Location of raw files. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it ubooquity /bin/bash To monitor the logs of the container in realtime: docker logs -f ubooquity Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ubooquity Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ubooquity:latest Versions 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 15.10.18: - Upgrade to Ubooquity 2.1.2. 23.08.18: - Rebase to alpine 3.8. 09.12.17: - Rebase to alpine 3.7. 07.10.17: - Upgrade to Ubooquity 2.1.1. 16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users. 26.05.17: - Rebase to alpine 3.6. 08.04.17: - Switch to java from 3.5 repo, fixes login crashes. 06.02.17: - Rebase to alpine 3.5. 06.12.16: - Initial Release.","title":"ubooquity"},{"location":"images/docker-ubooquity/#linuxserverubooquity","text":"Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.","title":"linuxserver/ubooquity"},{"location":"images/docker-ubooquity/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/ubooquity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-ubooquity/#application-setup","text":"IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below. Access the admin page at http://:2203/ubooquity/admin and set a password. Then you can access the webui at http://:2202/ubooquity/ This container will automatically scan your files at startup.","title":"Application Setup"},{"location":"images/docker-ubooquity/#maxmem","text":"The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That\u2019s when you get java.lang.OutOfMemoryError: Java heap space errors. You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB ) If no value is set it will default to 512MB.","title":"MAXMEM"},{"location":"images/docker-ubooquity/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-ubooquity/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : ubooquity : image : lscr.io/linuxserver/ubooquity:latest container_name : ubooquity environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MAXMEM= volumes : - :/config - :/books - :/comics - :/files ports : - 2202:2202 - 2203:2203 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-ubooquity/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = ubooquity \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MAXMEM = \\ -p 2202 :2202 \\ -p 2203 :2203 \\ -v :/config \\ -v :/books \\ -v :/comics \\ -v :/files \\ --restart unless-stopped \\ lscr.io/linuxserver/ubooquity:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-ubooquity/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-ubooquity/#ports-p","text":"Parameter Function 2202 The library port. 2203 The admin port.","title":"Ports (-p)"},{"location":"images/docker-ubooquity/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAXMEM= To set the maximum memory. ( ex: set '1024' for 1GB )","title":"Environment Variables (-e)"},{"location":"images/docker-ubooquity/#volume-mappings-v","text":"Volume Function /config Config files and database for ubooquity. /books Location of books. /comics Location of comics. /files Location of raw files.","title":"Volume Mappings (-v)"},{"location":"images/docker-ubooquity/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-ubooquity/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-ubooquity/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-ubooquity/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-ubooquity/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-ubooquity/#support-info","text":"Shell access whilst the container is running: docker exec -it ubooquity /bin/bash To monitor the logs of the container in realtime: docker logs -f ubooquity Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ubooquity Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ubooquity:latest","title":"Support Info"},{"location":"images/docker-ubooquity/#versions","text":"10.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 28.01.19: - Add pipeline logic and multi arch. 15.10.18: - Upgrade to Ubooquity 2.1.2. 23.08.18: - Rebase to alpine 3.8. 09.12.17: - Rebase to alpine 3.7. 07.10.17: - Upgrade to Ubooquity 2.1.1. 16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users. 26.05.17: - Rebase to alpine 3.6. 08.04.17: - Switch to java from 3.5 repo, fixes login crashes. 06.02.17: - Rebase to alpine 3.5. 06.12.16: - Initial Release.","title":"Versions"},{"location":"images/docker-unifi-controller/","text":"linuxserver/unifi-controller The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c Application Setup The webui is at https://ip:8443, setup with the first run wizard. For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System Settings > Controller Configuration and set the Controller Hostname/IP to a hostname or IP address accessible by your devices. Additionally the checkbox \"Override inform host with controller hostname/IP\" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption). In order to manually adopt a device take these steps: ssh ubnt@$AP-IP set-inform http://$address:8080/inform The default device password is ubnt . $address is the IP address of the host you are running this container on and $AP-IP is the Access Point IP address. When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting \"DHCP Gateway IP\", under Settings > Networks > network_name, to a correct (and accessable) ip address. Strict reverse proxies This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : unifi-controller : image : lscr.io/linuxserver/unifi-controller:latest container_name : unifi-controller environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MEM_LIMIT=1024 #optional - MEM_STARTUP=1024 #optional volumes : - :/config ports : - 8443:8443 - 3478:3478/udp - 10001:10001/udp - 8080:8080 - 1900:1900/udp #optional - 8843:8843 #optional - 8880:8880 #optional - 6789:6789 #optional - 5514:5514/udp #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = unifi-controller \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MEM_LIMIT = 1024 ` #optional` \\ -e MEM_STARTUP = 1024 ` #optional` \\ -p 8443 :8443 \\ -p 3478 :3478/udp \\ -p 10001 :10001/udp \\ -p 8080 :8080 \\ -p 1900 :1900/udp ` #optional` \\ -p 8843 :8843 ` #optional` \\ -p 8880 :8880 ` #optional` \\ -p 6789 :6789 ` #optional` \\ -p 5514 :5514/udp ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/unifi-controller:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 8443 Unifi web admin port 3478/udp Unifi STUN port 10001/udp Required for AP discovery 8080 Required for device communication 1900/udp Required for Make controller discoverable on L2 network option 8843 Unifi guest portal HTTPS redirect port 8880 Unifi guest portal HTTP redirect port 6789 For mobile throughput test 5514/udp Remote syslog port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London) - see list MEM_LIMIT=1024 Optionally change the Java memory limit (in Megabytes). Set to default to reset to default MEM_STARTUP=1024 Optionally change the Java initial/minimum memory (in Megabytes). Set to default to reset to default Volume Mappings ( -v ) Volume Function /config All Unifi data stored here Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it unifi-controller /bin/bash To monitor the logs of the container in realtime: docker logs -f unifi-controller Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-controller Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-controller:latest Versions 30.11.22: - Bump JRE to 11. 01.06.22: - Deprecate armhf. 23.12.21: - Move min/max memory config from run to system.properties. 22.12.21: - Move deb package install to first init to avoid overlayfs performance issues. 13.12.21: - Rebase 64 bit containers to Focal. 11.12.21: - Add java opts to mitigate CVE-2021-44228. 11.06.21: - Allow for changing Java initial mem via new optional environment variable. 12.01.21: - Deprecate the LTS tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully. 17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6. 16.06.20: - Add logrotate. 02.06.20: - Updated port list & descriptions. Moved some ports to optional. 14.11.19: - Changed url for deb package to match new Ubiquity domain. 29.07.19: - Allow for changing Java mem limit via new optional environment variable. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic","title":"unifi-controller"},{"location":"images/docker-unifi-controller/#linuxserverunifi-controller","text":"The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.","title":"linuxserver/unifi-controller"},{"location":"images/docker-unifi-controller/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u274c","title":"Supported Architectures"},{"location":"images/docker-unifi-controller/#application-setup","text":"The webui is at https://ip:8443, setup with the first run wizard. For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System Settings > Controller Configuration and set the Controller Hostname/IP to a hostname or IP address accessible by your devices. Additionally the checkbox \"Override inform host with controller hostname/IP\" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption). In order to manually adopt a device take these steps: ssh ubnt@$AP-IP set-inform http://$address:8080/inform The default device password is ubnt . $address is the IP address of the host you are running this container on and $AP-IP is the Access Point IP address. When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting \"DHCP Gateway IP\", under Settings > Networks > network_name, to a correct (and accessable) ip address.","title":"Application Setup"},{"location":"images/docker-unifi-controller/#strict-reverse-proxies","text":"This image uses a self-signed certificate by default. This naturally means the scheme is https . If you are using a reverse proxy which validates certificates, you need to disable this check for the container .","title":"Strict reverse proxies"},{"location":"images/docker-unifi-controller/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-unifi-controller/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : unifi-controller : image : lscr.io/linuxserver/unifi-controller:latest container_name : unifi-controller environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - MEM_LIMIT=1024 #optional - MEM_STARTUP=1024 #optional volumes : - :/config ports : - 8443:8443 - 3478:3478/udp - 10001:10001/udp - 8080:8080 - 1900:1900/udp #optional - 8843:8843 #optional - 8880:8880 #optional - 6789:6789 #optional - 5514:5514/udp #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-unifi-controller/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = unifi-controller \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e MEM_LIMIT = 1024 ` #optional` \\ -e MEM_STARTUP = 1024 ` #optional` \\ -p 8443 :8443 \\ -p 3478 :3478/udp \\ -p 10001 :10001/udp \\ -p 8080 :8080 \\ -p 1900 :1900/udp ` #optional` \\ -p 8843 :8843 ` #optional` \\ -p 8880 :8880 ` #optional` \\ -p 6789 :6789 ` #optional` \\ -p 5514 :5514/udp ` #optional` \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/unifi-controller:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-unifi-controller/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-unifi-controller/#ports-p","text":"Parameter Function 8443 Unifi web admin port 3478/udp Unifi STUN port 10001/udp Required for AP discovery 8080 Required for device communication 1900/udp Required for Make controller discoverable on L2 network option 8843 Unifi guest portal HTTPS redirect port 8880 Unifi guest portal HTTP redirect port 6789 For mobile throughput test 5514/udp Remote syslog port","title":"Ports (-p)"},{"location":"images/docker-unifi-controller/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London) - see list MEM_LIMIT=1024 Optionally change the Java memory limit (in Megabytes). Set to default to reset to default MEM_STARTUP=1024 Optionally change the Java initial/minimum memory (in Megabytes). Set to default to reset to default","title":"Environment Variables (-e)"},{"location":"images/docker-unifi-controller/#volume-mappings-v","text":"Volume Function /config All Unifi data stored here","title":"Volume Mappings (-v)"},{"location":"images/docker-unifi-controller/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-unifi-controller/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-unifi-controller/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-unifi-controller/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-unifi-controller/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-unifi-controller/#support-info","text":"Shell access whilst the container is running: docker exec -it unifi-controller /bin/bash To monitor the logs of the container in realtime: docker logs -f unifi-controller Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-controller Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-controller:latest","title":"Support Info"},{"location":"images/docker-unifi-controller/#versions","text":"30.11.22: - Bump JRE to 11. 01.06.22: - Deprecate armhf. 23.12.21: - Move min/max memory config from run to system.properties. 22.12.21: - Move deb package install to first init to avoid overlayfs performance issues. 13.12.21: - Rebase 64 bit containers to Focal. 11.12.21: - Add java opts to mitigate CVE-2021-44228. 11.06.21: - Allow for changing Java initial mem via new optional environment variable. 12.01.21: - Deprecate the LTS tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully. 17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6. 16.06.20: - Add logrotate. 02.06.20: - Updated port list & descriptions. Moved some ports to optional. 14.11.19: - Changed url for deb package to match new Ubiquity domain. 29.07.19: - Allow for changing Java mem limit via new optional environment variable. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic","title":"Versions"},{"location":"images/docker-webgrabplus/","text":"linuxserver/webgrabplus Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/webgrabplus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To configure WebGrab+Plus follow the documentation Please note that depending on your host this container may not work with the no-new-privileges=true security-opt. Note that there are some things in the guide that does not apply to this container. Below you can find the changes. The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file! The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to. To adjust the scheduled cron job for grabbing, edit the wg3-cron file found in the /config folder. After you have edited the the wg3-cron file, restart the container to apply the new schedule. Do not adjust the command! Note that due to something in version 3, we had to change the commands for scheduling the grab. If you have a version where there is a wg-cron file in your /config mount, delete it and use wg3-cron instead. Below is the syntax of the cron file. \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59) \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23) \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31) \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 month (1 - 12) \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of week (0 - 6) (Sunday to Saturday; \u2502 \u2502 \u2502 \u2502 \u2502 7 is also Sunday on some systems) \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 * * * * * /bin/bash /defaults/update.sh Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : webgrabplus : image : lscr.io/linuxserver/webgrabplus:latest container_name : webgrabplus hostname : webgrabplus mac_address : 00:00:00:00:00:00 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = webgrabplus \\ --hostname = webgrabplus \\ --mac-address = 00 :00:00:00:00:00 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/webgrabplus:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London Volume Mappings ( -v ) Volume Function /config Where webgrabplus should store it's config files. /data Where webgrabplus should store it's data files. Miscellaneous Options Parameter Function --hostname= Set the hostname for the container for the license check. --mac-address= Set the mac_address for the container for the license check. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it webgrabplus /bin/bash To monitor the logs of the container in realtime: docker logs -f webgrabplus Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webgrabplus Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webgrabplus:latest Versions 23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6. 29.04.22: - Add hostname and mac_address arguments that are needed for the license check to compose and cli samples. 23.03.22: - Rebase to Alpine 3.15. 23.03.22: - Update to use dotnet instead of mono. 06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable). 17.12.21: - Update to version 3.2.2 beta. 05.08.21: - Update to version 3.2.1 beta. 05.06.21: - Added mono-devel dependency. 04.06.21: - Update to version 3.1.8 beta. 22.03.21: - Update to version 3.1.7 beta. 07.03.21: - Update to version 3.1.6 beta. 29.01.21: - Update external version number to show as 3.1.5. 24.01.21: - Update to version 3.1.5 beta. 22.12.20: - Update to version 3.1.4 beta. 12.10.20: - Fix version number in jenkinsfile. 12.10.20: - Update to version 3.1.1 beta. 22.06.20: - Add mono webrequest library. 18.06.20: - Update to v3.1.0. 29.03.20: - Update to v3.0.0. Changed to use wg3-cron file. 28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 21.03.19: - Update to beta 2.1.7. 19.02.19: - Add pipeline logic and multi arch. 18.01.18: - Initial Release.","title":"webgrabplus"},{"location":"images/docker-webgrabplus/#linuxserverwebgrabplus","text":"Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.","title":"linuxserver/webgrabplus"},{"location":"images/docker-webgrabplus/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/webgrabplus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-webgrabplus/#application-setup","text":"To configure WebGrab+Plus follow the documentation Please note that depending on your host this container may not work with the no-new-privileges=true security-opt. Note that there are some things in the guide that does not apply to this container. Below you can find the changes. The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file! The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to. To adjust the scheduled cron job for grabbing, edit the wg3-cron file found in the /config folder. After you have edited the the wg3-cron file, restart the container to apply the new schedule. Do not adjust the command! Note that due to something in version 3, we had to change the commands for scheduling the grab. If you have a version where there is a wg-cron file in your /config mount, delete it and use wg3-cron instead. Below is the syntax of the cron file. \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59) \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23) \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31) \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 month (1 - 12) \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of week (0 - 6) (Sunday to Saturday; \u2502 \u2502 \u2502 \u2502 \u2502 7 is also Sunday on some systems) \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 * * * * * /bin/bash /defaults/update.sh","title":"Application Setup"},{"location":"images/docker-webgrabplus/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-webgrabplus/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : webgrabplus : image : lscr.io/linuxserver/webgrabplus:latest container_name : webgrabplus hostname : webgrabplus mac_address : 00:00:00:00:00:00 environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config - /path/to/data:/data restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-webgrabplus/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = webgrabplus \\ --hostname = webgrabplus \\ --mac-address = 00 :00:00:00:00:00 \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -v /path/to/config:/config \\ -v /path/to/data:/data \\ --restart unless-stopped \\ lscr.io/linuxserver/webgrabplus:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-webgrabplus/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-webgrabplus/#ports-p","text":"Parameter Function","title":"Ports (-p)"},{"location":"images/docker-webgrabplus/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London","title":"Environment Variables (-e)"},{"location":"images/docker-webgrabplus/#volume-mappings-v","text":"Volume Function /config Where webgrabplus should store it's config files. /data Where webgrabplus should store it's data files.","title":"Volume Mappings (-v)"},{"location":"images/docker-webgrabplus/#miscellaneous-options","text":"Parameter Function --hostname= Set the hostname for the container for the license check. --mac-address= Set the mac_address for the container for the license check.","title":"Miscellaneous Options"},{"location":"images/docker-webgrabplus/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-webgrabplus/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-webgrabplus/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-webgrabplus/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-webgrabplus/#support-info","text":"Shell access whilst the container is running: docker exec -it webgrabplus /bin/bash To monitor the logs of the container in realtime: docker logs -f webgrabplus Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webgrabplus Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webgrabplus:latest","title":"Support Info"},{"location":"images/docker-webgrabplus/#versions","text":"23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6. 29.04.22: - Add hostname and mac_address arguments that are needed for the license check to compose and cli samples. 23.03.22: - Rebase to Alpine 3.15. 23.03.22: - Update to use dotnet instead of mono. 06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable). 17.12.21: - Update to version 3.2.2 beta. 05.08.21: - Update to version 3.2.1 beta. 05.06.21: - Added mono-devel dependency. 04.06.21: - Update to version 3.1.8 beta. 22.03.21: - Update to version 3.1.7 beta. 07.03.21: - Update to version 3.1.6 beta. 29.01.21: - Update external version number to show as 3.1.5. 24.01.21: - Update to version 3.1.5 beta. 22.12.20: - Update to version 3.1.4 beta. 12.10.20: - Fix version number in jenkinsfile. 12.10.20: - Update to version 3.1.1 beta. 22.06.20: - Add mono webrequest library. 18.06.20: - Update to v3.1.0. 29.03.20: - Update to v3.0.0. Changed to use wg3-cron file. 28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 21.03.19: - Update to beta 2.1.7. 19.02.19: - Add pipeline logic and multi arch. 18.01.18: - Initial Release.","title":"Versions"},{"location":"images/docker-webtop/","text":"linuxserver/webtop Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/webtop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch Application Setup The Webtop can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false . You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen. Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program Keyboard Layouts This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard If you ever lose your password you can always reset it by execing into the container as root: docker exec -it webtop passwd abc By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet. Hardware Acceleration (Ubuntu Container Only) Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container. Intel/ATI/AMD To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device. Nvidia Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container. Arm Devices Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : webtop : image : lscr.io/linuxserver/webtop:latest container_name : webtop security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional - TITLE=Webtop #optional volumes : - /path/to/data:/config - /var/run/docker.sock:/var/run/docker.sock #optional ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = webtop \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -e TITLE = Webtop ` #optional` \\ -p 3000 :3000 \\ -v /path/to/data:/config \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/webtop:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Web Desktop GUI Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. TITLE=Webtop String which will be used as page/tab title in the web browser. Volume Mappings ( -v ) Volume Function /config abc users home directory /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container Device Mappings ( --device ) Parameter Function /dev/dri Add this for GL support (Linux hosts only) Miscellaneous Options Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it webtop /bin/bash To monitor the logs of the container in realtime: docker logs -f webtop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webtop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webtop:latest Versions 21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3. 12.03.22: - Add documentation for mounting in a GPU. 05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode. 21.09.21: - Add Fedora and Arch images, show seccomp settings in readme. 26.09.21: - Rebase to Alpine versions to 3.14. 20.04.21: - Initial release.","title":"webtop"},{"location":"images/docker-webtop/#linuxserverwebtop","text":"Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.","title":"linuxserver/webtop"},{"location":"images/docker-webtop/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/webtop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-webtop/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch","title":"Version Tags"},{"location":"images/docker-webtop/#application-setup","text":"The Webtop can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false . You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen. Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program","title":"Application Setup"},{"location":"images/docker-webtop/#keyboard-layouts","text":"This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard If you ever lose your password you can always reset it by execing into the container as root: docker exec -it webtop passwd abc By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.","title":"Keyboard Layouts"},{"location":"images/docker-webtop/#hardware-acceleration-ubuntu-container-only","text":"Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.","title":"Hardware Acceleration (Ubuntu Container Only)"},{"location":"images/docker-webtop/#intelatiamd","text":"To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer. --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.","title":"Intel/ATI/AMD"},{"location":"images/docker-webtop/#nvidia","text":"Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.","title":"Nvidia"},{"location":"images/docker-webtop/#arm-devices","text":"Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.","title":"Arm Devices"},{"location":"images/docker-webtop/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-webtop/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : webtop : image : lscr.io/linuxserver/webtop:latest container_name : webtop security_opt : - seccomp:unconfined #optional environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SUBFOLDER=/ #optional - KEYBOARD=en-us-qwerty #optional - TITLE=Webtop #optional volumes : - /path/to/data:/config - /var/run/docker.sock:/var/run/docker.sock #optional ports : - 3000:3000 devices : - /dev/dri:/dev/dri #optional shm_size : \"1gb\" #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-webtop/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = webtop \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SUBFOLDER = / ` #optional` \\ -e KEYBOARD = en-us-qwerty ` #optional` \\ -e TITLE = Webtop ` #optional` \\ -p 3000 :3000 \\ -v /path/to/data:/config \\ -v /var/run/docker.sock:/var/run/docker.sock ` #optional` \\ --device /dev/dri:/dev/dri ` #optional` \\ --shm-size = \"1gb\" ` #optional` \\ --restart unless-stopped \\ lscr.io/linuxserver/webtop:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-webtop/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-webtop/#ports-p","text":"Parameter Function 3000 Web Desktop GUI","title":"Ports (-p)"},{"location":"images/docker-webtop/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. TITLE=Webtop String which will be used as page/tab title in the web browser.","title":"Environment Variables (-e)"},{"location":"images/docker-webtop/#volume-mappings-v","text":"Volume Function /config abc users home directory /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container","title":"Volume Mappings (-v)"},{"location":"images/docker-webtop/#device-mappings-device","text":"Parameter Function /dev/dri Add this for GL support (Linux hosts only)","title":"Device Mappings (--device)"},{"location":"images/docker-webtop/#miscellaneous-options","text":"Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-webtop/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-webtop/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-webtop/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-webtop/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-webtop/#support-info","text":"Shell access whilst the container is running: docker exec -it webtop /bin/bash To monitor the logs of the container in realtime: docker logs -f webtop Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webtop Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webtop:latest","title":"Support Info"},{"location":"images/docker-webtop/#versions","text":"21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3. 12.03.22: - Add documentation for mounting in a GPU. 05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode. 21.09.21: - Add Fedora and Arch images, show seccomp settings in readme. 26.09.21: - Rebase to Alpine versions to 3.14. 20.04.21: - Initial release.","title":"Versions"},{"location":"images/docker-wikijs/","text":"linuxserver/wikijs Wikijs A modern, lightweight and powerful wiki app built on NodeJS. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wikijs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : wikijs : image : lscr.io/linuxserver/wikijs:latest container_name : wikijs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/data ports : - 3000:3000 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = wikijs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/wikijs:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 Port for Wiki.js's web interface. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where Wiki.js config is stored. /data Where Wiki.js data is stored. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it wikijs /bin/bash To monitor the logs of the container in realtime: docker logs -f wikijs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wikijs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wikijs:latest Versions 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 28.04.20: - Added python dependency for some NPM modules as well as git for storage module 14.12.19: - Initial Release.","title":"wikijs"},{"location":"images/docker-wikijs/#linuxserverwikijs","text":"Wikijs A modern, lightweight and powerful wiki app built on NodeJS.","title":"linuxserver/wikijs"},{"location":"images/docker-wikijs/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wikijs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-wikijs/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-wikijs/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : wikijs : image : lscr.io/linuxserver/wikijs:latest container_name : wikijs environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config - :/data ports : - 3000:3000 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-wikijs/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = wikijs \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 \\ -v :/config \\ -v :/data \\ --restart unless-stopped \\ lscr.io/linuxserver/wikijs:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-wikijs/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-wikijs/#ports-p","text":"Parameter Function 3000 Port for Wiki.js's web interface.","title":"Ports (-p)"},{"location":"images/docker-wikijs/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-wikijs/#volume-mappings-v","text":"Volume Function /config Where Wiki.js config is stored. /data Where Wiki.js data is stored.","title":"Volume Mappings (-v)"},{"location":"images/docker-wikijs/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-wikijs/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-wikijs/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-wikijs/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-wikijs/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-wikijs/#support-info","text":"Shell access whilst the container is running: docker exec -it wikijs /bin/bash To monitor the logs of the container in realtime: docker logs -f wikijs Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wikijs Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wikijs:latest","title":"Support Info"},{"location":"images/docker-wikijs/#versions","text":"10.10.22: - Rebasing to alpine 3.16, migrate to s6v3. 23.01.21: - Rebasing to alpine 3.13. 01.06.20: - Rebasing to alpine 3.12. 28.04.20: - Added python dependency for some NPM modules as well as git for storage module 14.12.19: - Initial Release.","title":"Versions"},{"location":"images/docker-wireguard/","text":"linuxserver/wireguard WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wireguard:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Version Tags This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases with support for compiling Wireguard modules alpine \u2705 Stable releases based on Alpine without support for compiling Wireguard modules Application Setup During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container. If the kernel is not built-in, or installed on host, the container will check if the kernel headers are present (in /usr/src ) and if not, it will attempt to download the necessary kernel headers from the ubuntu xenial/bionic , debian/raspbian buster repos; then will attempt to compile and install the kernel module. If the kernel headers are not found in either usr/src or in the repos mentioned, container will sleep indefinitely as wireguard cannot be installed. If you're on a debian/ubuntu based host with a custom or downstream distro provided kernel (ie. Pop!_OS), the container won't be able to install the kernel headers from the regular ubuntu and debian repos. In those cases, you can try installing the headers on the host via sudo apt install linux-headers-$(uname -r) (if distro version) and then add a volume mapping for /usr/src:/usr/src , or if custom built, map the location of the existing headers to allow the container to use host installed headers to build the kernel module (tested successful on Pop!_OS, ymmv). With regards to arm32/64 devices, Raspberry Pi 2-4 running the official ubuntu images or Raspbian Buster are supported out of the box. For all other devices and OSes, you can try installing the kernel headers on the host, and mapping /usr/src:/usr/src and it may just work (no guarantees). This can be run as a server or a client, based on the parameters used. Server Mode If the environment variable PEERS is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log. They will also be saved in text and png format under /config/peerX in case PEERS is a variable and an integer or /config/peer_X in case a list of names was provided instead of an integer. Variables SERVERURL , SERVERPORT , INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs. To add more peers/clients later on, you increment the PEERS environment variable or add more elements to the list and recreate the container. To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5 or docker exec -it wireguard /app/show-peer myPC myPhone myTablet (Keep in mind that the QR codes are also stored as PNGs in the config folder). The templates used for server and peer confs are saved under /config/templates . Advanced users can modify these templates and force conf generation by deleting /config/wg0.conf and restarting the container. Client Mode Do not set the PEERS environment variable. Drop your client conf into the config folder as /config/wg0.conf and start the container. If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs line in your peer/client wg0.conf to include only 0.0.0.0/0 and not ::/0 ; and restart the container. Road warriors, roaming and returning home If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost. This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally). Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different. Maintaining local access to attached services ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk. When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require): [Interface] PrivateKey = Address = 9.8.7.6/32 DNS = 8.8.8.8 PostUp = DROUTE=$(ip route | grep default | awk '{print $3}') ; HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT; iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = HOMENET=192.168.0.0/16 ; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT Site-to-site VPN ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk. Site-to-site VPN in server mode requires customizing the AllowedIPs statement for a specific peer in wg0.conf . Since wg0.conf is autogenerated when server vars are changed, it is not recommended to edit it manually. In order to customize the AllowedIPs statement for a specific peer in wg0.conf , you can set an env var SERVER_ALLOWEDIPS_PEER_ to the additional subnets you'd like to add, comma separated and excluding the peer IP (ie. \"192.168.1.0/24,192.168.2.0/24\" ). Replace with either the name or number of a peer (whichever is used in the PEERS var). For instance SERVER_ALLOWEDIPS_PEER_laptop=\"192.168.1.0/24,192.168.2.0/24\" will result in the wg0.conf entry AllowedIPs = 10.13.13.2,192.168.1.0/24,192.168.2.0/24 for the peer named laptop . Keep in mind that this var will only be considered when the confs are regenerated. Adding this var for an existing peer won't force a regeneration. You can delete wg0.conf and restart the container to force regeneration if necessary. Don't forget to set the necessary POSTUP and POSTDOWN rules in your client's peer conf for lan access. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : wireguard : image : lscr.io/linuxserver/wireguard:latest container_name : wireguard cap_add : - NET_ADMIN - SYS_MODULE environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=wireguard.domain.com #optional - SERVERPORT=51820 #optional - PEERS=1 #optional - PEERDNS=auto #optional - INTERNAL_SUBNET=10.13.13.0 #optional - ALLOWEDIPS=0.0.0.0/0 #optional - LOG_CONFS=true #optional volumes : - /path/to/appdata/config:/config - /lib/modules:/lib/modules #optional ports : - 51820:51820/udp sysctls : - net.ipv4.conf.all.src_valid_mark=1 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = wireguard \\ --cap-add = NET_ADMIN \\ --cap-add = SYS_MODULE \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SERVERURL = wireguard.domain.com ` #optional` \\ -e SERVERPORT = 51820 ` #optional` \\ -e PEERS = 1 ` #optional` \\ -e PEERDNS = auto ` #optional` \\ -e INTERNAL_SUBNET = 10 .13.13.0 ` #optional` \\ -e ALLOWEDIPS = 0 .0.0.0/0 ` #optional` \\ -e LOG_CONFS = true ` #optional` \\ -p 51820 :51820/udp \\ -v /path/to/appdata/config:/config \\ -v /lib/modules:/lib/modules ` #optional` \\ --sysctl = \"net.ipv4.conf.all.src_valid_mark=1\" \\ --restart unless-stopped \\ lscr.io/linuxserver/wireguard:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 51820/udp wireguard port Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SERVERURL=wireguard.domain.com External IP or domain name for docker host. Used in server mode. If set to auto , the container will try to determine and set the external IP automatically SERVERPORT=51820 External port for docker host. Used in server mode. PEERS=1 Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet (alphanumeric only) PEERDNS=auto DNS server set in peer/client configs (can be set as 8.8.8.8 ). Used in server mode. Defaults to auto , which uses wireguard docker host's DNS via included CoreDNS forward. INTERNAL_SUBNET=10.13.13.0 Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode. ALLOWEDIPS=0.0.0.0/0 The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1. LOG_CONFS=true Generated QR codes will be displayed in the docker log. Set to false to skip log output. Volume Mappings ( -v ) Volume Function /config Contains all relevant configuration files. /lib/modules Maps host's modules folder. Only required if compiling wireguard modules. Miscellaneous Options Parameter Function --sysctl= Required for client mode. Portainer notice {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it wireguard /bin/bash To monitor the logs of the container in realtime: docker logs -f wireguard Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireguard Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireguard:latest Versions 26.10.22: - Better handle unsupported peer names. Improve logging. 12.10.22: - Add Alpine branch. Optimize wg and coredns services. 09.10.22: - Switch back to iptables-legacy due to issues on some hosts. 04.10.22: - Rebase to Jammy. Upgrade to s6v3. 16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present. 23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes. 10.04.22: - Rebase to Ubuntu Focal. Add LOG_CONFS env var. Remove deprecated add-peer command. 28.10.21: - Add site-to-site vpn support. 11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating. 06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode. 04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete /config/templates/peer.conf and restart 27.09.20: - Cleaning service binding example to have accurate PreDown script. 06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs. 29.07.20: - Update Coredns config to detect dns loops (existing users need to delete /config/coredns/Corefile and restart). 27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete /config/coredns/Corefile and restart). 05.07.20: - Add Debian updates and security repos for headers. 25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives. 19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs. 29.05.20: - Add support for 64bit raspbian. 28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64). 20.04.20: - Fix typo in client mode conf existence check. 13.04.20: - Fix bug that forced conf recreation on every start. 08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for PEERDNS=auto setting. Update the add-peer / show-peer scripts to utilize the templates and the INTERNAL_SUBNET var (previously missed, oops). 05.04.20: - Add INTERNAL_SUBNET variable to prevent subnet clashes. Add templates for server and peer confs. 01.04.20: - Add show-peer script and include info on host installed headers. 31.03.20: - Initial Release.","title":"wireguard"},{"location":"images/docker-wireguard/#linuxserverwireguard","text":"WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.","title":"linuxserver/wireguard"},{"location":"images/docker-wireguard/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wireguard:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-wireguard/#version-tags","text":"This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags. Tag Available Description latest \u2705 Stable releases with support for compiling Wireguard modules alpine \u2705 Stable releases based on Alpine without support for compiling Wireguard modules","title":"Version Tags"},{"location":"images/docker-wireguard/#application-setup","text":"During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container. If the kernel is not built-in, or installed on host, the container will check if the kernel headers are present (in /usr/src ) and if not, it will attempt to download the necessary kernel headers from the ubuntu xenial/bionic , debian/raspbian buster repos; then will attempt to compile and install the kernel module. If the kernel headers are not found in either usr/src or in the repos mentioned, container will sleep indefinitely as wireguard cannot be installed. If you're on a debian/ubuntu based host with a custom or downstream distro provided kernel (ie. Pop!_OS), the container won't be able to install the kernel headers from the regular ubuntu and debian repos. In those cases, you can try installing the headers on the host via sudo apt install linux-headers-$(uname -r) (if distro version) and then add a volume mapping for /usr/src:/usr/src , or if custom built, map the location of the existing headers to allow the container to use host installed headers to build the kernel module (tested successful on Pop!_OS, ymmv). With regards to arm32/64 devices, Raspberry Pi 2-4 running the official ubuntu images or Raspbian Buster are supported out of the box. For all other devices and OSes, you can try installing the kernel headers on the host, and mapping /usr/src:/usr/src and it may just work (no guarantees). This can be run as a server or a client, based on the parameters used.","title":"Application Setup"},{"location":"images/docker-wireguard/#server-mode","text":"If the environment variable PEERS is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log. They will also be saved in text and png format under /config/peerX in case PEERS is a variable and an integer or /config/peer_X in case a list of names was provided instead of an integer. Variables SERVERURL , SERVERPORT , INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs. To add more peers/clients later on, you increment the PEERS environment variable or add more elements to the list and recreate the container. To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5 or docker exec -it wireguard /app/show-peer myPC myPhone myTablet (Keep in mind that the QR codes are also stored as PNGs in the config folder). The templates used for server and peer confs are saved under /config/templates . Advanced users can modify these templates and force conf generation by deleting /config/wg0.conf and restarting the container.","title":"Server Mode"},{"location":"images/docker-wireguard/#client-mode","text":"Do not set the PEERS environment variable. Drop your client conf into the config folder as /config/wg0.conf and start the container. If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs line in your peer/client wg0.conf to include only 0.0.0.0/0 and not ::/0 ; and restart the container.","title":"Client Mode"},{"location":"images/docker-wireguard/#road-warriors-roaming-and-returning-home","text":"If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost. This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally). Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.","title":"Road warriors, roaming and returning home"},{"location":"images/docker-wireguard/#maintaining-local-access-to-attached-services","text":"** Note: This is not a supported configuration by Linuxserver.io - use at your own risk. When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require): [Interface] PrivateKey = Address = 9.8.7.6/32 DNS = 8.8.8.8 PostUp = DROUTE=$(ip route | grep default | awk '{print $3}') ; HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT; iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = HOMENET=192.168.0.0/16 ; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT","title":"Maintaining local access to attached services"},{"location":"images/docker-wireguard/#site-to-site-vpn","text":"** Note: This is not a supported configuration by Linuxserver.io - use at your own risk. Site-to-site VPN in server mode requires customizing the AllowedIPs statement for a specific peer in wg0.conf . Since wg0.conf is autogenerated when server vars are changed, it is not recommended to edit it manually. In order to customize the AllowedIPs statement for a specific peer in wg0.conf , you can set an env var SERVER_ALLOWEDIPS_PEER_ to the additional subnets you'd like to add, comma separated and excluding the peer IP (ie. \"192.168.1.0/24,192.168.2.0/24\" ). Replace with either the name or number of a peer (whichever is used in the PEERS var). For instance SERVER_ALLOWEDIPS_PEER_laptop=\"192.168.1.0/24,192.168.2.0/24\" will result in the wg0.conf entry AllowedIPs = 10.13.13.2,192.168.1.0/24,192.168.2.0/24 for the peer named laptop . Keep in mind that this var will only be considered when the confs are regenerated. Adding this var for an existing peer won't force a regeneration. You can delete wg0.conf and restart the container to force regeneration if necessary. Don't forget to set the necessary POSTUP and POSTDOWN rules in your client's peer conf for lan access.","title":"Site-to-site VPN"},{"location":"images/docker-wireguard/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-wireguard/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : wireguard : image : lscr.io/linuxserver/wireguard:latest container_name : wireguard cap_add : - NET_ADMIN - SYS_MODULE environment : - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=wireguard.domain.com #optional - SERVERPORT=51820 #optional - PEERS=1 #optional - PEERDNS=auto #optional - INTERNAL_SUBNET=10.13.13.0 #optional - ALLOWEDIPS=0.0.0.0/0 #optional - LOG_CONFS=true #optional volumes : - /path/to/appdata/config:/config - /lib/modules:/lib/modules #optional ports : - 51820:51820/udp sysctls : - net.ipv4.conf.all.src_valid_mark=1 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-wireguard/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = wireguard \\ --cap-add = NET_ADMIN \\ --cap-add = SYS_MODULE \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -e SERVERURL = wireguard.domain.com ` #optional` \\ -e SERVERPORT = 51820 ` #optional` \\ -e PEERS = 1 ` #optional` \\ -e PEERDNS = auto ` #optional` \\ -e INTERNAL_SUBNET = 10 .13.13.0 ` #optional` \\ -e ALLOWEDIPS = 0 .0.0.0/0 ` #optional` \\ -e LOG_CONFS = true ` #optional` \\ -p 51820 :51820/udp \\ -v /path/to/appdata/config:/config \\ -v /lib/modules:/lib/modules ` #optional` \\ --sysctl = \"net.ipv4.conf.all.src_valid_mark=1\" \\ --restart unless-stopped \\ lscr.io/linuxserver/wireguard:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-wireguard/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-wireguard/#ports-p","text":"Parameter Function 51820/udp wireguard port","title":"Ports (-p)"},{"location":"images/docker-wireguard/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SERVERURL=wireguard.domain.com External IP or domain name for docker host. Used in server mode. If set to auto , the container will try to determine and set the external IP automatically SERVERPORT=51820 External port for docker host. Used in server mode. PEERS=1 Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet (alphanumeric only) PEERDNS=auto DNS server set in peer/client configs (can be set as 8.8.8.8 ). Used in server mode. Defaults to auto , which uses wireguard docker host's DNS via included CoreDNS forward. INTERNAL_SUBNET=10.13.13.0 Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode. ALLOWEDIPS=0.0.0.0/0 The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1. LOG_CONFS=true Generated QR codes will be displayed in the docker log. Set to false to skip log output.","title":"Environment Variables (-e)"},{"location":"images/docker-wireguard/#volume-mappings-v","text":"Volume Function /config Contains all relevant configuration files. /lib/modules Maps host's modules folder. Only required if compiling wireguard modules.","title":"Volume Mappings (-v)"},{"location":"images/docker-wireguard/#miscellaneous-options","text":"Parameter Function --sysctl= Required for client mode.","title":"Miscellaneous Options"},{"location":"images/docker-wireguard/#portainer-notice","text":"{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.","title":"Portainer notice"},{"location":"images/docker-wireguard/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-wireguard/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-wireguard/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-wireguard/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-wireguard/#support-info","text":"Shell access whilst the container is running: docker exec -it wireguard /bin/bash To monitor the logs of the container in realtime: docker logs -f wireguard Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireguard Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireguard:latest","title":"Support Info"},{"location":"images/docker-wireguard/#versions","text":"26.10.22: - Better handle unsupported peer names. Improve logging. 12.10.22: - Add Alpine branch. Optimize wg and coredns services. 09.10.22: - Switch back to iptables-legacy due to issues on some hosts. 04.10.22: - Rebase to Jammy. Upgrade to s6v3. 16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present. 23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes. 10.04.22: - Rebase to Ubuntu Focal. Add LOG_CONFS env var. Remove deprecated add-peer command. 28.10.21: - Add site-to-site vpn support. 11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating. 06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode. 04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete /config/templates/peer.conf and restart 27.09.20: - Cleaning service binding example to have accurate PreDown script. 06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs. 29.07.20: - Update Coredns config to detect dns loops (existing users need to delete /config/coredns/Corefile and restart). 27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete /config/coredns/Corefile and restart). 05.07.20: - Add Debian updates and security repos for headers. 25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives. 19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs. 29.05.20: - Add support for 64bit raspbian. 28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64). 20.04.20: - Fix typo in client mode conf existence check. 13.04.20: - Fix bug that forced conf recreation on every start. 08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for PEERDNS=auto setting. Update the add-peer / show-peer scripts to utilize the templates and the INTERNAL_SUBNET var (previously missed, oops). 05.04.20: - Add INTERNAL_SUBNET variable to prevent subnet clashes. Add templates for server and peer confs. 01.04.20: - Add show-peer script and include info on host installed headers. 31.03.20: - Initial Release.","title":"Versions"},{"location":"images/docker-wireshark/","text":"linuxserver/wireshark Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wireshark:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true In order to dump from an interface you will need to pass NET_ADMIN at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from. If you do not specificy host networking you will need to map port 3000 with -p 3000:3000 . Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : wireshark : image : lscr.io/linuxserver/wireshark:latest container_name : wireshark cap_add : - NET_ADMIN security_opt : - seccomp:unconfined #optional network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 #optional restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = wireshark \\ --net = host \\ --cap-add = NET_ADMIN \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 ` #optional` \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/wireshark:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 3000 WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic. Networking ( --net ) Parameter Function --net=host Use Host Networking Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Users home directory in the container, stores program settings and potentially dump files. Miscellaneous Options Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker. Portainer notice {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer. Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it wireshark /bin/bash To monitor the logs of the container in realtime: docker logs -f wireshark Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireshark Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireshark:latest Versions 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 14.02.22: - Rebase to Alpine. 31.03.20: - Initial release.","title":"wireshark"},{"location":"images/docker-wireshark/#linuxserverwireshark","text":"Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.","title":"linuxserver/wireshark"},{"location":"images/docker-wireshark/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/wireshark:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-wireshark/#application-setup","text":"The application can be accessed at: http://yourhost:3000/ By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: http://yourhost:3000/?login=true In order to dump from an interface you will need to pass NET_ADMIN at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from. If you do not specificy host networking you will need to map port 3000 with -p 3000:3000 .","title":"Application Setup"},{"location":"images/docker-wireshark/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-wireshark/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : wireshark : image : lscr.io/linuxserver/wireshark:latest container_name : wireshark cap_add : - NET_ADMIN security_opt : - seccomp:unconfined #optional network_mode : host environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - /path/to/config:/config ports : - 3000:3000 #optional restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-wireshark/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = wireshark \\ --net = host \\ --cap-add = NET_ADMIN \\ --security-opt seccomp = unconfined ` #optional` \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 3000 :3000 ` #optional` \\ -v /path/to/config:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/wireshark:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-wireshark/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-wireshark/#ports-p","text":"Parameter Function 3000 WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic.","title":"Ports (-p)"},{"location":"images/docker-wireshark/#networking-net","text":"Parameter Function --net=host Use Host Networking","title":"Networking (--net)"},{"location":"images/docker-wireshark/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-wireshark/#volume-mappings-v","text":"Volume Function /config Users home directory in the container, stores program settings and potentially dump files.","title":"Volume Mappings (-v)"},{"location":"images/docker-wireshark/#miscellaneous-options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker.","title":"Miscellaneous Options"},{"location":"images/docker-wireshark/#portainer-notice","text":"{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.","title":"Portainer notice"},{"location":"images/docker-wireshark/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-wireshark/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-wireshark/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-wireshark/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-wireshark/#support-info","text":"Shell access whilst the container is running: docker exec -it wireshark /bin/bash To monitor the logs of the container in realtime: docker logs -f wireshark Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireshark Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireshark:latest","title":"Support Info"},{"location":"images/docker-wireshark/#versions","text":"23.10.22: - Rebase to Alpine 3.16, migrate to s6v3. 14.02.22: - Rebase to Alpine. 31.03.20: - Initial release.","title":"Versions"},{"location":"images/docker-xbackbone/","text":"linuxserver/xbackbone Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/xbackbone:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup Access the WebUI at \\ :80/443. Follow the installation wizard. For more information, check out XBackBone . If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini Example: upload_max_filesize = 25M post_max_size = 25M For reverse proxying, remember to change the base_url in /config/www/xbackbone/config.php to your domain if you initially set up the application with a local url. E.g. 'base_url' => 'https://images.yourdomain.com', Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : xbackbone : image : lscr.io/linuxserver/xbackbone:latest container_name : xbackbone environment : - PUID=1000 - PGID=1000 - TZ=Europe/Oslo volumes : - /path/to/data:/config ports : - 80:80 - 443:443 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = xbackbone \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/Oslo \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/xbackbone:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 80 http gui 443 https gui Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/Oslo Timezone (i.e., Europe/Oslo) Volume Mappings ( -v ) Volume Function /config config directory volume mapping Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it xbackbone /bin/bash To monitor the logs of the container in realtime: docker logs -f xbackbone Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' xbackbone Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/xbackbone:latest Versions 04.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 02.08.22: - Added note about updating. 06.06.21: - Initial Release.","title":"xbackbone"},{"location":"images/docker-xbackbone/#linuxserverxbackbone","text":"Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.","title":"linuxserver/xbackbone"},{"location":"images/docker-xbackbone/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/xbackbone:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-xbackbone/#application-setup","text":"Access the WebUI at \\ :80/443. Follow the installation wizard. For more information, check out XBackBone . If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini Example: upload_max_filesize = 25M post_max_size = 25M For reverse proxying, remember to change the base_url in /config/www/xbackbone/config.php to your domain if you initially set up the application with a local url. E.g. 'base_url' => 'https://images.yourdomain.com',","title":"Application Setup"},{"location":"images/docker-xbackbone/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-xbackbone/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : xbackbone : image : lscr.io/linuxserver/xbackbone:latest container_name : xbackbone environment : - PUID=1000 - PGID=1000 - TZ=Europe/Oslo volumes : - /path/to/data:/config ports : - 80:80 - 443:443 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-xbackbone/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = xbackbone \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/Oslo \\ -p 80 :80 \\ -p 443 :443 \\ -v /path/to/data:/config \\ --restart unless-stopped \\ lscr.io/linuxserver/xbackbone:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-xbackbone/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-xbackbone/#ports-p","text":"Parameter Function 80 http gui 443 https gui","title":"Ports (-p)"},{"location":"images/docker-xbackbone/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/Oslo Timezone (i.e., Europe/Oslo)","title":"Environment Variables (-e)"},{"location":"images/docker-xbackbone/#volume-mappings-v","text":"Volume Function /config config directory volume mapping","title":"Volume Mappings (-v)"},{"location":"images/docker-xbackbone/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-xbackbone/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-xbackbone/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-xbackbone/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-xbackbone/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-xbackbone/#support-info","text":"Shell access whilst the container is running: docker exec -it xbackbone /bin/bash To monitor the logs of the container in realtime: docker logs -f xbackbone Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' xbackbone Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/xbackbone:latest","title":"Support Info"},{"location":"images/docker-xbackbone/#versions","text":"04.11.22: - Rebase to Alpine 3.16, migrate to s6v3. 01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs ( see changes announcement ). 02.08.22: - Added note about updating. 06.06.21: - Initial Release.","title":"Versions"},{"location":"images/docker-yq/","text":"The LinuxServer.io team brings you another container release featuring: regular and timely application updates easy user mappings (PGID, PUID) custom base image with s6 overlay weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth regular security updates Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget linuxserver/yq yq : Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq , jq , and xq . Supported Architectures Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/yq should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest Usage Docker cli docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint yq \\ linuxserver/yq \\ .foo.bar input.yml You can replace the last line with any yq command and argument, which will be passed to yq inside the image. docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint jq \\ linuxserver/yq \\ .foo.bar input.json You can replace the last line with any jq command and argument, which will be passed to jq inside the image. docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint xq \\ linuxserver/yq \\ .foo.bar input.xml You can replace the last line with any xq command and argument, which will be passed to xq inside the image. Recommended method We provide a very convenient script that allows the yq container to run as if it was installed natively: sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-yq.sh -o /usr/local/bin/yq sudo chmod +x /usr/local/bin/yq Running these two commands on your docker host once will let you issue commands such as yq .foo.bar input.yml and the yq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-jq.sh -o /usr/local/bin/jq sudo chmod +x /usr/local/bin/jq Running these two commands on your docker host once will let you issue commands such as jq .foo.bar input.json and the jq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-xq.sh -o /usr/local/bin/xq sudo chmod +x /usr/local/bin/xq Running these two commands on your docker host once will let you issue commands such as xq .foo.bar input.xml and the xq container will do its job behind the scenes. Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above. Support Info image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/yq Updating Info Via Docker Cli Update the image: docker pull linuxserver/yq You can also remove the old dangling images: docker image prune Building locally If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-yq.git cd docker-yq docker build \\ --no-cache \\ --pull \\ -t linuxserver/yq:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 . Versions 19.09.22: - Rebase to 3.17. 19.09.22: - Rebase to 3.15. 18.05.21: - Rebase to 3.13. add linuxserver wheel repo. 09.10.20: - Fix run scripts evaluating $ in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands. 07.10.20: - Initial Release.","title":"yq"},{"location":"images/docker-yq/#linuxserveryq","text":"yq : Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq , jq , and xq .","title":"linuxserver/yq"},{"location":"images/docker-yq/#supported-architectures","text":"Our images support multiple architectures such as x86-64 , arm64 and armhf . We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling linuxserver/yq should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest","title":"Supported Architectures"},{"location":"images/docker-yq/#usage","text":"","title":"Usage"},{"location":"images/docker-yq/#docker-cli","text":"docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint yq \\ linuxserver/yq \\ .foo.bar input.yml You can replace the last line with any yq command and argument, which will be passed to yq inside the image. docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint jq \\ linuxserver/yq \\ .foo.bar input.json You can replace the last line with any jq command and argument, which will be passed to jq inside the image. docker run --rm \\ -v \"$PWD:$PWD\" \\ -w=\"$PWD\" \\ --entrypoint xq \\ linuxserver/yq \\ .foo.bar input.xml You can replace the last line with any xq command and argument, which will be passed to xq inside the image.","title":"Docker cli"},{"location":"images/docker-yq/#recommended-method","text":"We provide a very convenient script that allows the yq container to run as if it was installed natively: sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-yq.sh -o /usr/local/bin/yq sudo chmod +x /usr/local/bin/yq Running these two commands on your docker host once will let you issue commands such as yq .foo.bar input.yml and the yq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-jq.sh -o /usr/local/bin/jq sudo chmod +x /usr/local/bin/jq Running these two commands on your docker host once will let you issue commands such as jq .foo.bar input.json and the jq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-xq.sh -o /usr/local/bin/xq sudo chmod +x /usr/local/bin/xq Running these two commands on your docker host once will let you issue commands such as xq .foo.bar input.xml and the xq container will do its job behind the scenes.","title":"Recommended method"},{"location":"images/docker-yq/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.","title":"Docker Mods"},{"location":"images/docker-yq/#support-info","text":"image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/yq","title":"Support Info"},{"location":"images/docker-yq/#updating-info","text":"","title":"Updating Info"},{"location":"images/docker-yq/#via-docker-cli","text":"Update the image: docker pull linuxserver/yq You can also remove the old dangling images: docker image prune","title":"Via Docker Cli"},{"location":"images/docker-yq/#building-locally","text":"If you want to make local modifications to these images for development purposes or just to customize the logic: git clone https://github.com/linuxserver/docker-yq.git cd docker-yq docker build \\ --no-cache \\ --pull \\ -t linuxserver/yq:latest . The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static docker run --rm --privileged multiarch/qemu-user-static:register --reset Once registered you can define the dockerfile to use with -f Dockerfile.aarch64 .","title":"Building locally"},{"location":"images/docker-yq/#versions","text":"19.09.22: - Rebase to 3.17. 19.09.22: - Rebase to 3.15. 18.05.21: - Rebase to 3.13. add linuxserver wheel repo. 09.10.20: - Fix run scripts evaluating $ in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands. 07.10.20: - Initial Release.","title":"Versions"},{"location":"images/docker-znc/","text":"linuxserver/znc Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC. Supported Architectures We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/znc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\ Application Setup To log in to the application, browse to http:// :6501. Default User: admin Default Password: admin change password ASAP. Usage To help you get started creating a container from this image you can either use docker-compose or the docker cli. docker-compose (recommended, click here for more info ) --- version : \"2.1\" services : znc : image : lscr.io/linuxserver/znc:latest container_name : znc environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 6501:6501 restart : unless-stopped docker cli ( click here for more info ) docker run -d \\ --name = znc \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6501 :6501 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/znc:latest Parameters Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container. Ports ( -p ) Parameter Function 6501 Port ZNC listens on. Environment Variables ( -e ) Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. Volume Mappings ( -v ) Volume Function /config Where local ZNC data is stored. Miscellaneous Options Parameter Function Environment variables from files (Docker secrets) You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file. Umask for running applications For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support. User / Group Identifiers When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup ) Docker Mods We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above. Support Info Shell access whilst the container is running: docker exec -it znc /bin/bash To monitor the logs of the container in realtime: docker logs -f znc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' znc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/znc:latest Versions 19.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 02.11.19: - Add znc-palaver module. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 31.01.19: - Add pipeline logic and multi arch. 30.01.19: - Add push and clientbuffer modules. 17.08.18: - Rebase to alpine 3.8, use buildstage. 03.01.18: - Deprecate cpu_core routine lack of scaling. 07.12.17: - Rebase alpine linux 3.7. 25.10.17: - Remove debug switch from run command. 26.05.17: - Rebase alpine linux 3.6. 06.02.17: - Rebase alpine linux 3.5. 19.01.17: - Add playback module. 07.01.17: - Add ca-certificates package, resolve sasl issues. 07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 11.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 20.08.16: - Rebase to alpine linux, move to main repository. 11.12.15: - Initial Release.","title":"znc"},{"location":"images/docker-znc/#linuxserverznc","text":"Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.","title":"linuxserver/znc"},{"location":"images/docker-znc/#supported-architectures","text":"We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here . Simply pulling lscr.io/linuxserver/znc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags. The architectures supported by this image are: Architecture Available Tag x86-64 \u2705 amd64-\\ arm64 \u2705 arm64v8-\\ armhf \u2705 arm32v7-\\","title":"Supported Architectures"},{"location":"images/docker-znc/#application-setup","text":"To log in to the application, browse to http:// :6501. Default User: admin Default Password: admin change password ASAP.","title":"Application Setup"},{"location":"images/docker-znc/#usage","text":"To help you get started creating a container from this image you can either use docker-compose or the docker cli.","title":"Usage"},{"location":"images/docker-znc/#docker-compose-recommended-click-here-for-more-info","text":"--- version : \"2.1\" services : znc : image : lscr.io/linuxserver/znc:latest container_name : znc environment : - PUID=1000 - PGID=1000 - TZ=Europe/London volumes : - :/config ports : - 6501:6501 restart : unless-stopped","title":"docker-compose (recommended, click here for more info)"},{"location":"images/docker-znc/#docker-cli-click-here-for-more-info","text":"docker run -d \\ --name = znc \\ -e PUID = 1000 \\ -e PGID = 1000 \\ -e TZ = Europe/London \\ -p 6501 :6501 \\ -v :/config \\ --restart unless-stopped \\ lscr.io/linuxserver/znc:latest","title":"docker cli (click here for more info)"},{"location":"images/docker-znc/#parameters","text":"Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate : respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.","title":"Parameters"},{"location":"images/docker-znc/#ports-p","text":"Parameter Function 6501 Port ZNC listens on.","title":"Ports (-p)"},{"location":"images/docker-znc/#environment-variables-e","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London.","title":"Environment Variables (-e)"},{"location":"images/docker-znc/#volume-mappings-v","text":"Volume Function /config Where local ZNC data is stored.","title":"Volume Mappings (-v)"},{"location":"images/docker-znc/#miscellaneous-options","text":"Parameter Function","title":"Miscellaneous Options"},{"location":"images/docker-znc/#environment-variables-from-files-docker-secrets","text":"You can set any environment variable from a file by using a special prepend FILE__ . As an example: -e FILE__PASSWORD = /run/secrets/mysecretpassword Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.","title":"Environment variables from files (Docker secrets)"},{"location":"images/docker-znc/#umask-for-running-applications","text":"For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.","title":"Umask for running applications"},{"location":"images/docker-znc/#user-group-identifiers","text":"When using volumes ( -v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID . Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. In this instance PUID=1000 and PGID=1000 , to find yours use id user as below: $ id username uid = 1000 ( dockeruser ) gid = 1000 ( dockergroup ) groups = 1000 ( dockergroup )","title":"User / Group Identifiers"},{"location":"images/docker-znc/#docker-mods","text":"We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.","title":"Docker Mods"},{"location":"images/docker-znc/#support-info","text":"Shell access whilst the container is running: docker exec -it znc /bin/bash To monitor the logs of the container in realtime: docker logs -f znc Container version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' znc Image version number docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/znc:latest","title":"Support Info"},{"location":"images/docker-znc/#versions","text":"19.01.22: - Rebasing to alpine 3.15. 01.06.20: - Rebasing to alpine 3.12. 19.12.19: - Rebasing to alpine 3.11. 02.11.19: - Add znc-palaver module. 28.06.19: - Rebasing to alpine 3.10. 23.03.19: - Switching to new Base images, shift to arm32v7 tag. 22.02.19: - Rebasing to alpine 3.9. 31.01.19: - Add pipeline logic and multi arch. 30.01.19: - Add push and clientbuffer modules. 17.08.18: - Rebase to alpine 3.8, use buildstage. 03.01.18: - Deprecate cpu_core routine lack of scaling. 07.12.17: - Rebase alpine linux 3.7. 25.10.17: - Remove debug switch from run command. 26.05.17: - Rebase alpine linux 3.6. 06.02.17: - Rebase alpine linux 3.5. 19.01.17: - Add playback module. 07.01.17: - Add ca-certificates package, resolve sasl issues. 07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation. 14.10.16: - Add version layer information. 30.09.16: - Fix umask. 11.09.16: - Add layer badges to README. 28.08.16: - Add badges to README. 20.08.16: - Rebase to alpine linux, move to main repository. 11.12.15: - Initial Release.","title":"Versions"},{"location":"misc/finances/","text":"Finances v0.1 Beta (Work in progress) Created 2021-08-18 Updated 2021-08-18 Charter We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members. Annual Expenses DigitalOcean yearly costs (currently paid for) $1200 AWS ~$200 Contabo hosting $287.76 Email Hosting $20 Various domains ~$150 Docker Pro Plan $60 Various licenses ~$150 Votes In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed. Acceptable uses of money Hardware/Software needed to help the group reach a specific goal Stationary + Related items for possible Conventions Convention Fees (Both Attendence and Travel) Hosting services (Included domain purchases) Good will gestures (Example: For users outside the group that have provided help when asked) Food/Drink for LinuxServer.io focused sprints. Donations to upstream projects Links https://opencollective.com/linuxserver#category-BUDGET","title":"Finances"},{"location":"misc/finances/#finances","text":"v0.1 Beta (Work in progress) Created 2021-08-18 Updated 2021-08-18","title":"Finances"},{"location":"misc/finances/#charter","text":"We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.","title":"Charter"},{"location":"misc/finances/#annual-expenses","text":"DigitalOcean yearly costs (currently paid for) $1200 AWS ~$200 Contabo hosting $287.76 Email Hosting $20 Various domains ~$150 Docker Pro Plan $60 Various licenses ~$150","title":"Annual Expenses"},{"location":"misc/finances/#votes","text":"In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.","title":"Votes"},{"location":"misc/finances/#acceptable-uses-of-money","text":"Hardware/Software needed to help the group reach a specific goal Stationary + Related items for possible Conventions Convention Fees (Both Attendence and Travel) Hosting services (Included domain purchases) Good will gestures (Example: For users outside the group that have provided help when asked) Food/Drink for LinuxServer.io focused sprints. Donations to upstream projects","title":"Acceptable uses of money"},{"location":"misc/finances/#links","text":"https://opencollective.com/linuxserver#category-BUDGET","title":"Links"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"

    Welcome to the home of the LinuxServer.io documentation! It is our goal to ensure that all of our images are properly documented with all of the relevant information in order to help our users get started. As well as individual set up guides for each of our images, there is also general information pertaining to the running of Docker containers, and best practices.

    "},{"location":"#want-to-get-hold-of-the-team","title":"Want to get hold of the team?","text":"

    The team resides primarily in our Discord server. We also have a forum if chat isn't your thing.

    Where Link Discord https://discord.gg/YWrKVTn Forum https://discourse.linuxserver.io

    For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/

    "},{"location":"FAQ/","title":"FAQ","text":"

    Here will some Frequently Asked Questions reside

    "},{"location":"FAQ/#jammy","title":"My host is incompatible with images based on Ubuntu Jammy","text":"

    Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.

    • Symptoms

      If your host is affected you may see errors in your containers such as:

      ERROR - Unable to determine java version; make sure Java is installed and callable\n

      Or

      Failed to create CoreCLR, HRESULT: 0x80070008\n

      Or

      WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread\n
    • Resolution

    • Option 1 (Long-Term Fix)

      Upgrade your Docker engine install to at least version 20.10.10. Refer to the official Docker docs for installation/update details.

    • Option 2 (Short-Term Fix)

      For Docker CLI, run your container with:

      --security-opt seccomp=unconfined

      For Docker Compose, run your container with:

        security_opt:\n- seccomp=unconfined\n
    "},{"location":"FAQ/#rdesktop","title":"My host is incompatible with images based on rdesktop","text":"

    Some x86_64 hosts have issues running rdesktop based images even with the latest docker version due to syscalls that are unknown to docker.

    • Symptoms

      If your host is affected you may see errors in your containers such as:

      Failed to close file descriptor for child process (Operation not permitted)\n
    • Resolution

      For Docker CLI, run your container with:

      --security-opt seccomp=unconfined

      For Docker Compose, run your container with:

        security_opt:\n- seccomp=unconfined\n
    "},{"location":"FAQ/#libseccomp","title":"My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later","text":"

    This only affects 32 bit installs of distros based on Debian Buster.

    This is due to a bug in the libseccomp2 library (dependency of Docker itself), which is fixed. However it's not pushed to all the repositories.

    A GitHub issue tracking this

    You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3).

    • Resolution

      If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed.

      If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, refer to the official Docker docs for installation.

    • Option 1

      Manually install an updated version of the library with dpkg.

      wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb\nsudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb\n

      {% hint style=\"info\" %} This url may have been updated. Find the latest by browsing here.

    • Option 2

      Add the backports repo for DebianBuster. As seen here.

      sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138\necho \"deb http://deb.debian.org/debian buster-backports main\" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list\nsudo apt update\nsudo apt install -t buster-backports libseccomp2\n
    • Option 3

      Reinstall/update your OS to a version that still gets updates.

      • Any distro based on DebianStretch does not seem to have this package available
      • DebianBuster based distros can get the package trough backports, as outlined in point 2.

      {% hint style=\"info\" %} RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel

    • Symptoms

    • 502 errors in Jellyfin as seen in linuxserver/docker-jellyfin#71

    • Error starting framework core messages in the docker log for Plex. linuxserver/docker-plex#247
    • No WebUI for Radarr, even though the container is running. linuxserver/docker-radarr#118
    • Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to error getting time:crypto/asn1/a_time.c:330
    • docker exec <container-name> date returns 1970
    "},{"location":"FAQ/#strict-proxy","title":"I want to reverse proxy a application which defaults to https with a selfsigned certificate","text":""},{"location":"FAQ/#strict-proxy-traefik","title":"Traefik","text":"

    In this example we will configure a serverTransport rule we can apply to a service, as well as telling Traefik to use https on the backend for the service.

    Create a ServerTransport in your dynamic Traefik configuration, we are calling ours ignorecert.

        http:\n      serversTransports:\n        ignorecert:\n          insecureSkipVerify: true\n

    Then on our foo service we tell it to use this rule, as well as telling Traefik the backend is running on https.

        - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert\n    - traefik.http.services.foo.loadbalancer.server.scheme=https\n
    "},{"location":"general/awesome-lsio/","title":"Awesome LSIO","text":""},{"location":"general/awesome-lsio/#administration","title":"Administration","text":"Container Description doublecommander Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. endlessh endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server. ldap-auth ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012). netbootxyz netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags. netbox netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations. openssh-server openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. snipe-it snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster."},{"location":"general/awesome-lsio/#audiobooks","title":"Audiobooks","text":"Container Description booksonic-air booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of"},{"location":"general/awesome-lsio/#automation","title":"Automation","text":"Container Description domoticz domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. habridge habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API. homeassistant Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. kanzi kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon."},{"location":"general/awesome-lsio/#backup","title":"Backup","text":"Container Description duplicati duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others. resilio-sync resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes. rsnapshot rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\" syncthing syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet."},{"location":"general/awesome-lsio/#books","title":"Books","text":"Container Description calibre calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts. calibre-web calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. cops cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server. lazylibrarian lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork. mylar3 mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL. readarr readarr - Book Manager and Automation (Sonarr for Ebooks) ubooquity ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer."},{"location":"general/awesome-lsio/#cloud","title":"Cloud","text":"Container Description nextcloud nextcloud gives you access to all your files wherever you are."},{"location":"general/awesome-lsio/#crypto","title":"Crypto","text":"Container Description gmail-order-bot gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose. nano nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions. nano-discord-bot nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account. nano-wallet nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions."},{"location":"general/awesome-lsio/#dns","title":"DNS","text":"Container Description adguardhome-sync adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances. ddclient ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways. duckdns duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence."},{"location":"general/awesome-lsio/#dashboard","title":"Dashboard","text":"Container Description heimdall heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. muximux muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps."},{"location":"general/awesome-lsio/#databases","title":"Databases","text":"Container Description mariadb mariadb is one of the most popular database servers. Made by the original developers of MySQL. mysql-workbench MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more. phpmyadmin phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. sqlitebrowser DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite."},{"location":"general/awesome-lsio/#docker","title":"Docker","text":"Container Description docker-compose No description fleet fleet provides an online web interface which displays a set of maintained images from one or more owned repositories."},{"location":"general/awesome-lsio/#documents","title":"Documents","text":"Container Description libreoffice LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. paperless-ng paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" paperless-ngx paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\" papermerge papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\""},{"location":"general/awesome-lsio/#downloaders","title":"Downloaders","text":"Container Description deluge deluge is a lightweight, Free Software, cross-platform BitTorrent client. nntp2nntp nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast. nzbget nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. pyload-ng pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. qbittorrent The qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. sabnzbd sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction. transmission 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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more."},{"location":"general/awesome-lsio/#ftp","title":"FTP","text":"Container Description davos davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow. filezilla FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface."},{"location":"general/awesome-lsio/#family","title":"Family","text":"Container Description babybuddy babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work."},{"location":"general/awesome-lsio/#file-sharing","title":"File Sharing","text":"Container Description projectsend projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files. pwndrop pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV. pydio-cells pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture. snapdrop snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. xbackbone xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support."},{"location":"general/awesome-lsio/#finance","title":"Finance","text":"Container Description budge budge is an open source 'budgeting with envelopes' personal finance app."},{"location":"general/awesome-lsio/#games","title":"Games","text":"Container Description emulatorjs emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS. minetest minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like."},{"location":"general/awesome-lsio/#graphics","title":"Graphics","text":"Container Description blender Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience kdenlive Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready."},{"location":"general/awesome-lsio/#irc","title":"IRC","text":"Container Description limnoria limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot. ngircd ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd. pidgin Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time. quassel-core quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. quassel-web quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here. thelounge thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server. znc znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC."},{"location":"general/awesome-lsio/#indexers","title":"Indexers","text":"Container Description jackett jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps. nzbhydra2 nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra. prowlarr prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all)."},{"location":"general/awesome-lsio/#media-management","title":"Media Management","text":"Container Description bazarr bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. medusa medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. plex-meta-manager plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. radarr radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato. sickchill sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic. sickgear SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more.. sonarr sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available."},{"location":"general/awesome-lsio/#media-players","title":"Media Players","text":"Container Description emby emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server. jellyfin jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. plex plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster."},{"location":"general/awesome-lsio/#media-requesters","title":"Media Requesters","text":"Container Description doplarr doplarr is an *arr request bot for Discord.\" ombi ombi allows you to host your own Plex Request and user management system. overseerr overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem."},{"location":"general/awesome-lsio/#media-tools","title":"Media Tools","text":"Container Description embystat embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff. ffmpeg No description htpcmanager htpcmanager is a front end for many htpc related applications. minisatip minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards. oscam oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client. synclounge synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are. tautulli tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server. tvheadend tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. webgrabplus webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels."},{"location":"general/awesome-lsio/#monitor","title":"Monitor","text":"Container Description apprise-api apprise-api Takes advantage of Apprise through your network with a user-friendly API. healthchecks healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface. librespeed librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. smokeping smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis. syslog-ng syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools."},{"location":"general/awesome-lsio/#music","title":"Music","text":"Container Description airsonic-advanced airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. audacity Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source. beets beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools. daapd daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. headphones headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole. lidarr lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available. mstream mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone."},{"location":"general/awesome-lsio/#network","title":"Network","text":"Container Description unifi-controller The unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance. wireshark Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998."},{"location":"general/awesome-lsio/#photos","title":"Photos","text":"Container Description chevereto chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions. darktable darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them. digikam digiKam: Professional Photo Management with the Power of Open Source lychee lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\" photoshow photoshow is gallery software at its easiest, it doesn't even require a database. piwigo piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. pixapop pixapop is an open-source single page application to view your photos in the easiest way possible."},{"location":"general/awesome-lsio/#programming","title":"Programming","text":"Container Description cloud9 cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins. code-server code-server is VS Code running on a remote server, accessible through the browser. openvscode-server openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser. pylon pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project."},{"location":"general/awesome-lsio/#rss","title":"RSS","text":"Container Description freshrss freshrss is a free, self-hostable aggregator for rss feeds."},{"location":"general/awesome-lsio/#recipes","title":"Recipes","text":"Container Description grocy grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility."},{"location":"general/awesome-lsio/#remote","title":"Remote","text":"Container Description guacd guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends. rdesktop rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP. remmina Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported. webtop webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser."},{"location":"general/awesome-lsio/#science","title":"Science","text":"Container Description boinc BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications. foldingathome Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics."},{"location":"general/awesome-lsio/#storage","title":"Storage","text":"Container Description diskover diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems. qdirstat QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat. scrutiny scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze."},{"location":"general/awesome-lsio/#tools","title":"Tools","text":"Container Description yq No description"},{"location":"general/awesome-lsio/#vpn","title":"VPN","text":"Container Description wireguard WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry."},{"location":"general/awesome-lsio/#web","title":"Web","text":"Container Description firefox Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards. grav grav is a Fast, Simple, and Flexible, file-based Web-platform. nginx nginx is a simple webserver with php support. The config files reside in /config for easy user customization. swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention."},{"location":"general/awesome-lsio/#wiki","title":"Wiki","text":"Container Description bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. hedgedoc HedgeDoc gives you access to all your files wherever you are. raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS."},{"location":"general/container-customization/","title":"Customizing LinuxServer Containers","text":"

    One of the challenges we face as an organization is making everyone happy with the functionality we provide for the software we package in Docker containers. As the projects that we package and distribute grow, conventionally so do the use cases along with large communities of power users. As it has become very difficult for us to support Swiss Army Knife style images we are looking to the community of users to start customizing our base image layer themselves.

    Something we provide and pride ourselves on is keeping our containers up to date with not only the latest external software releases, but also with the latest distribution level packages. Conventionally when people needed some form of custom functionality they would fork our source and build something once that suited their needs leaving this dangling fork without updates or basic maintenance.

    Behind the scenes we have been working to provide the community with the ability to customize our images not only for themselves but also for other users. This comes in the form of 3 different tools:

    • Private Custom Scripts
    • Private Custom Services
    • Public Facing Docker Mods

    All of the functionality described in this post is live on every one of the containers we currently maintain:

    https://fleet.linuxserver.io

    NOTE: While the following support has been added to our containers, we will not give support to any custom scripts, services, or mods. If you are having an issue with one of our containers, be sure to disable all custom scripts/services/mods before seeking support.

    "},{"location":"general/container-customization/#custom-scripts","title":"Custom Scripts","text":"

    The first part of this update is the support for a user's custom scripts to run at startup. In every container, simply create a new folder located at /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins.

    Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or

    services:\nbar:\nvolumes:\n- /home/foo/appdata/bar:/config\n- /home/foo/appdata/my-custom-files:/custom-cont-init.d:ro\n

    if using compose. Where possible, to improve security, we recommend mounting them read-only (:ro) so that container processes cannot write to the location.

    One example use case is our Piwigo container has a plugin that supports video, but requires ffmpeg to be installed. No problem. Add this bad boy into a script file (can be named anything) and you're good to go.

    #!/bin/bash\n\necho \"**** installing ffmpeg ****\"\napk add --no-cache ffmpeg\n

    NOTE: The folder /custom-cont-init.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.

    "},{"location":"general/container-customization/#custom-services","title":"Custom Services","text":"

    There might also be a need to run an additional service in a container alongside what we already package. Similarly to the custom scripts, just create a new directory at /custom-services.d. The files in this directory should be named after the service they will be running. Similar to with custom scripts you will need to mount this folder like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-services:/custom-services.d if using the Docker CLI or

    services:\nbar:\nvolumes:\n- /home/foo/appdata/bar:/config\n- /home/foo/appdata/my-custom-services:/custom-services.d:ro\n

    if using compose. Where possible, to improve security, we recommend mounting them read-only (:ro) so that container processes cannot write to the location.

    Running cron in our containers is now as simple as a single file. Drop this script in /custom-services.d/cron and it will run automatically in the container:

    #!/usr/bin/with-contenv bash\n\n/usr/sbin/crond -f -S -l 0 -c /etc/crontabs\n

    NOTE: With this example, you will most likely need to have cron installed via a custom script using the technique in the previous section, and will need to populate the crontab.

    NOTE: The folder /custom-services.d needs to be owned by root! If this is not the case, this folder will be renamed and a new (empty) folder will be created. This is to prevent remote code execution by putting scripts in the aforementioned folder.

    "},{"location":"general/container-customization/#docker-mods","title":"Docker Mods","text":"

    In most cases if you needed to write some kind of custom logic to get a plugin to work or to use some kind of popular external service you will not be the only one that finds this logic useful.

    If you would like to publish and support your hard work we provide a system for a user to pass a single environment variable to the container to ingest your custom modifications.

    We consume Mods from Dockerhub and in order to publish one following our guide, you only need a Github Account and a Dockerhub account. (Our guide and example code can be found here)

    Essentially it is a system that stashes a tarball of scripts and any other files you need in an image layer on Dockerhub. When we spin up the container we will download this tarball and extract it to /.

    This allows community members to publish a relatively static pile of logic that will always be applied to an end user's up to date Linuxserver.io container.

    An example of how this logic can be used to greatly expand the functionality of our base containers would be to add VPN support to a Transmission container:

    docker create \\\n--name=transmission \\\n--cap-add=NET_ADMIN \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e DOCKER_MODS=taisun/config-mods:pia \\\n-e PIAUSER=pmyuser \\\n-e PIAPASS=mypassword \\\n-e PIAENDPOINT=\"US New York City\" \\\n-e TZ=US/Eastern \\\n-p 9091:9091 \\\n-p 51413:51413 \\\n-p 51413:51413/udp \\\n-v path to data:/config \\\n-v path to downloads:/downloads \\\n-v path to watch folder:/watch \\\n--restart unless-stopped \\\nlinuxserver/transmission\n

    The source code for this mod can be found here.

    NOTE: When pulling in logic from external sources practice caution and trust the sources/community you get them from, as there are extreme security implications to consuming files from sources outside of our control.

    "},{"location":"general/container-customization/#we-are-here-to-help","title":"We are here to help","text":"

    If you are interested in writing custom logic and possibly sharing it with the community in the form of a Docker Mod we are always available to help you out.

    Our Discord server is best for quick direct contact and our Forum for a longer running project.

    There is zero barrier to entry for these levels of container customization and you are in complete control.

    We are looking forward to your next creation.

    "},{"location":"general/container-execution/","title":"Container Execution","text":"

    You may find at some point you need to view the internal data of a container.

    "},{"location":"general/container-execution/#shell-access","title":"Shell Access","text":"

    Particularly useful when debugging the application - to shell in to one of our containers, run the following:

    docker exec -it <container_name> /bin/bash\n
    "},{"location":"general/container-execution/#tailing-the-logs","title":"Tailing the logs","text":"

    The vast majority of our images are configured to output the application logs to the console, which in Docker's terms means you can access them using the docker logs command:

    docker logs -f --tail=<number_of_lines_to_start_with> <container_name>\n

    The --tail argument is optional, but useful if the application has been running for a long time - the logs command by default will output all logs.

    To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:

    # ~/.bash_aliases\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n

    Execute it with dtail <container_name>.

    "},{"location":"general/container-execution/#checking-the-build-version","title":"Checking the build version","text":"

    If you are experiencing issues with one of our containers, it helps us to know which version of the image your container is running from. The primary reason we ask for this is because you may be reporting an issue we are aware of and have subsequently fixed. However, if you are running on the latest version of our image, it could indeed be a newly found bug, which we'd want to know more about.

    To obtain the build version for the container:

    docker inspect -f '{{ index .Config.Labels \"build_version\" }}' <container_name>\n

    Or the image:

    docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/<image_name>\n
    "},{"location":"general/containers-101/","title":"Docker Containers: 101","text":"

    A container bundles all the libraries required by an application to run, you no longer need to know which version of Java, Apache or whatever \u2013 the person who built the container for you took care of that. Containers don\u2019t usually ship with configuration files baked in though. This is because the contents of a container are \u2018stateless\u2019 or \u2018immutable\u2019. In English, this means the state or filesystem of the container itself cannot be modified after it is created.

    "},{"location":"general/containers-101/#what-do-i-need-to-know","title":"What do I need to know?","text":"

    To get started, not much. You will need to know about some of the terminology or concepts when performing more advanced tasks or troubleshooting but getting started couldn't be much simpler.

    docker run hello-world\n

    That's it, your first docker container. It pre-supposes you have docker installed but that's all it takes to run a container. You didn't need to know anything about installed what that app needed to run - this is the key benefit. hello-world is a simple example but imagine you have a complex application with a large number of dependencies and it is tied to a specific version of Python or Java. Then imagine you have a second app again tied to a specific, but different, version of Java or Python. Now you have to try and ensure these two (often conflicting) versions sit on the same host and play nice. In the world of containers these two versions can operate in complete isolation from one another. Bliss.

    "},{"location":"general/containers-101/#key-terminology","title":"Key Terminology","text":"

    There are a few terms you might find useful to understand when working with containers:

    • docker - the first, and most popular, container runtime - it sits as an abstraction layer between the kernels features such as cgroups or namespaces and running applications
    • container - a sandboxed process isolated in memory and running instance of an image
    • image - a pre-built filesystem in a format ready to be understood by a container runtime (usually docker)
    • volume - use volumes to persist data outside of the containers sandboxed filesystem
    • environment - a way of configuring the sandboxed environment your container runs in
    "},{"location":"general/containers-101/#key-concepts","title":"Key Concepts","text":"

    Containers are completely sandboxed environments by the Linux kernel. It may help you to think of them somewhat like a small VM however in practice this is largely false. The Linux kernel controls access to various system resources utilising control groups (cgroups). We rely on docker to translate these complex concepts into simple ones that users can understand and consume.

    By default a running container has absolutely no context of the world around it. Out the box you cannot connect from the outside world to the running webservers on ports 80 and 443 below. To allow entry to the sandbox from the outside world we must explicitly allow entry using the -p flag.

    docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt\n

    Take this concept and multiply it across all aspects of a running application. Ports, volumes (i.e. the files you want to be available inside the container from outside the container), environment variables and so on. For us as developers this allows us to isolate your system from troubleshooting as the box the container is running in (the container) is identical to the next.

    Containers are an amazing way to run applications in a secure, sandboxed way.

    "},{"location":"general/docker-compose/","title":"Docker Compose","text":""},{"location":"general/docker-compose/#intro","title":"Intro","text":"

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application\u2019s services. Then, with a single command, you create and start all the services from your configuration.

    Note that when inputting data for variables, you must follow standard YAML rules. In the case of passwords with special characters this can mean escaping them properly ($ is the escape character) or properly quoting the variable. The best course of action if you do not know how to do this or are unwilling to research, is to stick to alphanumeric characters only.

    "},{"location":"general/docker-compose/#installation","title":"Installation","text":"
    • Install Option 1 (recommended)

    Starting with version 2, Docker started publishing docker compose as a go based plugin for docker (rather than a python based standalone binary). And they also publish this plugin for various arches, including x86_64, armhf and aarch64 (as opposed to the x86_64 only binaries for v1.X). Therefore we updated our recommended install option to utilize the plugin.

    You can install docker compose via the following commands:

    ARCH=$(uname -m) && [[ \"${ARCH}\" == \"armv7l\" ]] && ARCH=\"armv7\"\nsudo mkdir -p /usr/local/lib/docker/cli-plugins\nsudo curl -SL \"https://github.com/docker/compose/releases/latest/download/docker-compose-linux-${ARCH}\" -o /usr/local/lib/docker/cli-plugins/docker-compose\nsudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose\n

    Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running docker compose version should display the compose version.

    If you don't have docker installed yet, we recommend installing it via the following commands:

    curl -fsSL https://get.docker.com -o get-docker.sh\nsh get-docker.sh\n
    • v1.X compatibility

      As v2 runs as a plugin instead of a standalone binary, it is invoked by docker compose args instead of docker-compose args. There are also some slight differences in how the yaml is operated as well. To make migration easier, Docker released a replacement binary for docker-compose on x86_64 and aarch64 platforms. More info on that can be found at the upstream repo.

    • Install Option 2

    You can install docker-compose using our docker-compose image via a run script. You can simply run the following commands on your system and you should have a functional install that you can call from anywhere as docker-compose:

    sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/v2/run.sh -o /usr/local/bin/docker-compose\nsudo chmod +x /usr/local/bin/docker-compose\n

    In order to update the local image, you can run the following commands:

    docker pull linuxserver/docker-compose:\"${DOCKER_COMPOSE_IMAGE_TAG:-v2}\"\ndocker image prune -f\n

    The above commands will use the v2 images (although invoked bydocker-compose instead of docker compose). If you'd like to use v1 images, you can set an env var DOCKER_COMPOSE_IMAGE_TAG=alpine, DOCKER_COMPOSE_IMAGE_TAG=ubuntu in your respective .profile. Alternatively you can set that var to a versioned image tag like v2-2.4.1-r1 or version-alpine-1.27.4 to pin it to a specific docker-compose version.

    "},{"location":"general/docker-compose/#single-service-usage","title":"Single service Usage","text":"

    Here's a basic example for deploying a Linuxserver container with docker compose:

    version: \"2.1\"\nservices:\nheimdall:\nimage: linuxserver/heimdall\ncontainer_name: heimdall\nvolumes:\n- /home/user/appdata/heimdall:/config\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n

    If you save the above snippet in a file named docker-compose.yml, you can simply run docker compose up -d from within the same folder and the heimdall image will be automatically pulled, and a container will be created and started. up means bring the services up, and -d means do it in the background.

    If you want to do it from a different folder or if you named the yaml file differently, ie. heimdall.yml, then you can define it in the command with -f: docker compose -f /path/to/heimdall.yml up -d

    To bring down the services, simply do docker compose down or docker compose -f /path/to/heimdall.yml down and all containers defined by the yml will be stopped and destroyed.

    "},{"location":"general/docker-compose/#multiple-service-usage","title":"Multiple Service Usage","text":"

    You can have multiple services managed by a single compose yaml. Copy the contents below the services: line in any of our readme yaml samples into the same yaml file and the docker compose up/down commands will apply to all services at once.

    Let's say you have the following in a yaml file named docker-compose.yml:

    version: \"2.1\"\nservices:\nheimdall:\nimage: linuxserver/heimdall\ncontainer_name: heimdall\nvolumes:\n- /home/user/appdata/heimdall:/config\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\nnginx:\nimage: linuxserver/nginx\ncontainer_name: nginx\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /home/user/appdata/nginx:/config\nports:\n- 81:80\n- 444:443\nrestart: unless-stopped\nmariadb:\nimage: linuxserver/mariadb\ncontainer_name: mariadb\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD\n- TZ=Europe/London\nvolumes:\n- /home/user/appdata/mariadb:/config\nports:\n- 3306:3306\nrestart: unless-stopped\n

    You now have 3 services defined in there: heimdall, nginx and mariadb. When you do a docker compose up -d, it will first download the images for all three if they don't exist (if they exist, they are not updated) and it will create all three containers and start them. docker compose down will bring all three services down and destroy the containers (persistent data will remain).

    "},{"location":"general/docker-compose/#updates","title":"Updates","text":"

    If you want to update the images and recreate the containers with the same vars, it's extremely easy with docker-compose. First we tell it to update all images via docker compose pull. Then we issue docker compose up -d and it will automatically recreate the containers (as necessary) based on the updated images. If a container's image is already the latest and there was no update, it remains untouched.

    Similarly, if you edit the contents of the yaml file and re-issue docker compose up -d, only the containers affected by the changes to the yaml file will be recreated, others will be untouched.

    Defining the containers running on your server as code is a core tenet of a \"Devops\" approach to the world. Constructing elaborate docker run commands and then forgetting which variables you passed is a thing of the past when using docker compose.

    "},{"location":"general/docker-compose/#support-requests","title":"Support Requests","text":"

    If you would like to request support, you can do so on our forum or on our discord server. When you do so, please provide all the necessary information like the server and platform info, docker container log and the compose yaml.

    If your compose yaml makes use of .env, please post an output of docker compose convert or docker compose convert -f /path/to/compose.yml for the entire yaml, or docker compose convert <service name> for a single service, as it will automatically replace the environment variables with their actual values.

    "},{"location":"general/docker-compose/#tips-tricks","title":"Tips & Tricks","text":"

    docker compose expects a docker-compose.yml file in the current directory and if one isn't present it will complain. In order to improve your quality of life we suggest the use of bash aliases. The file path for the aliases below assumes that the docker-compose.yml file is being kept in the folder /opt. If your compose file is kept somewhere else, like in a home directory, then the path will need to be changed.

    Create or open the file ~/.bash_aliases and populate with the following content:

    alias dcup='docker compose -f /opt/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup\nalias dcdown='docker compose -f /opt/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown\nalias dcpull='docker compose -f /opt/docker-compose.yml pull' #pulls all new images is specified after dcpull\nalias dclogs='docker compose -f /opt/docker-compose.yml logs -tf --tail=\"50\" '  alias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n

    If the docker-compose.yml file is in a home directory, the following can be put in the ~/.bash_aliases file.

    alias dcup='docker-compose -f ~/docker-compose.yml up -d' #brings up all containers if one is not defined after dcup\nalias dcdown='docker-compose -f ~/docker-compose.yml stop' #brings down all containers if one is not defined after dcdown\nalias dcpull='docker-compose -f ~/docker-compose.yml pull' #pulls all new images unless one is specified\nalias dclogs='docker-compose -f ~/docker-compose.yml logs -tf --tail=\"50\" '\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n

    There are multiple ways to see the logs of your containers. In some instances, using docker logs is preferable to docker compose logs. By default docker logs will not run unless you define which service the logs are coming from. The docker compose logs will pull all of the logs for the services defined in the docker-compose.yml file.

    When asking for help, you should post your logs or be ready to provide logs if someone requests it. If you are running multiple containers in your docker-compose.yml file, it is not helpful to submit all of the logs. If you are experiencing issues with a single service, say Heimdall, then you would want to get your logs using docker logs heimdall or docker compose logs heimdall. The bash_alias for dclogs can be used if you define your service after you've typed the alias. Likewise, the bash_alias detail will not run without defining the service after it.

    Some distributions, like Ubuntu, already have the code snippet below in the ~/.bashrc file. If it is not included, you'll need to add the following to your ~/.bashrc file in order for the aliases file to be picked up:

    if [ -f ~/.bash_aliases ]; then\n. ~/.bash_aliases\nfi\n

    Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.

    "},{"location":"general/fleet/","title":"Fleet","text":""},{"location":"general/fleet/#how-fleet-works","title":"How Fleet works","text":"

    Fleet stores a snapshot of Docker Images in its own database, consisting of metadata deemed most pertinent to both the users of the images, and the repository owner. It will synchronize with Docker Hub over a set interval in order to update its stored data.

    It then displays this snapshot data on its own status page as a useful list, containing links to each repository and image owned by the repository owner. Each image also contains a status which is managed by the repository owner, who can define images as either Stable or Unstable. This is designed to quickly help users know when an image is undergoing a state of instability which is known by the owner.

    "},{"location":"general/fleet/#why-a-snapshot","title":"Why a snapshot?","text":"

    In short, Docker Hub's API is very slow. It would not be a good long-term solution to just proxy the responses from Docker Hub and translate the data into something considered useful by downstream clients. By caching the image information in its own database, Fleet is able to more efficiently return the status data for each image and repository. In doing so, it is also able to provide more concise data, such as image versions, as part of the primary response, rather than requiring users to make a separate call.

    As an example comparison between obtaining all image name, pull and version information for all LinuxServer images from Docker Hub, and then obtaining that same data via Fleet's API:

    API Time (ms) Docker Hub (multiple calls) 52000ms Fleet 50ms"},{"location":"general/fleet/#capabilities","title":"Capabilities","text":"

    Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.

    "},{"location":"general/fleet/#hidden","title":"Hidden","text":"

    If an image is hidden, it will not be displayed as part of the main list, nor will it be returned as part of any API calls. This also means that the pull count of a hidden image is not included.

    "},{"location":"general/fleet/#unstable","title":"Unstable","text":"

    Marks an image as having issues known by the maintainer. A useful state to assign to an image if the latest build (or builds) are causing downstream breakages. This may also be useful if an upstream dependency or application is causing breakages in the image directly.

    "},{"location":"general/fleet/#deprecated","title":"Deprecated","text":"

    If the maintainer of the image, or upstream application no longer wishes to provide support, or if the image has reached its end-of-life (or has been superseded by another), marking an image as deprecated will ensure users are made aware that no further updates will be supplied, and should stop using it. Deprecation notices are also provided to give context.

    "},{"location":"general/fleet/#api","title":"API","text":"

    Fleet exposes a single API endpoint which can be used to obtain image list and pull count information for all relevant images maintained by the repository

    {% api-method method=\"get\" host=\"https://fleet.linuxserver.io\" path=\"/api/v1/images\" %} {% api-method-summary %} Get All Repositories and Images

    {% api-method-description %} Returns all synchronized images.

    {% api-method-spec %}

    {% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned.

    {\n\"status\": \"OK\",\n\"data\" {\n\"totalPullCount\": 1862494227,\n\"repositories\": {\n\"lsiobase\": [\n{\n\"name\": \"alpine\",\n\"pullCount\": 4275970,\n\"version\": \"3.6\",\n\"stable\": true\n},\n{\n\"name\": \"alpine.arm64\",\n\"pullCount\": 66234,\n\"version\": \"edge\",\n\"stable\": true\n},\n...\n],\n\"linuxserver\": [\n{\n\"name\": \"airsonic\",\n\"pullCount\": 4608329,\n\"version\": \"v10.2.1\",\n\"stable\": true\n},\n{\n\"name\": \"apache\",\n\"pullCount\": 3011699,\n\"version\": \"latest\",\n\"stable\": true\n},\n...\n]\n...\n}\n}\n}\n

    {% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %}

    {% hint style=\"info\" %} Any repositories not synchronized with Docker Hub (e.g. staging or metadata repositories) will not be returned as part of the API. This also applies to images which the repository owner does not wish to be part of the primary image list.

    "},{"location":"general/fleet/#running-fleet","title":"Running Fleet","text":"

    {% hint style=\"warning\" %} Fleet is a Java application and requires at least JRE 11.

    Grab the latest Fleet release from GitHub.

    "},{"location":"general/fleet/#sql","title":"SQL","text":"

    Fleet stores its data in a MariaDB database which you need to provide. In order for the application to manage its tables and procedures, the user you provide it needs to have the relevant GRANT permissions to the fleet database. The following script should be sufficient to get the initial database set up.

    CREATE SCHEMA `fleet`;\nCREATE USER 'fleet_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `fleet`.* TO 'fleet_user';\n

    The username and password that you define must then be provided as part of Fleet's configuration.

    "},{"location":"general/fleet/#configuration-file","title":"Configuration File","text":"

    All primary configuration for Fleet at runtime is loaded in via a fleet.properties file. This can be located anywhere on the file system, and is loaded in via a Runtime argument:

    # Runtime\nfleet.app.port=8080\n\n# Database Connectivity\nfleet.database.driver=org.mariadb.jdbc.Driver\nfleet.database.url=jdbc:mariadb://<IP_OR_URL>:3306/fleet\nfleet.database.username=<fleet_sql_user>\nfleet.database.password=<fleet_sql_password>\n\n# Password security\nfleet.admin.secret=<a_random_string>\n

    All configuration can be loaded either via the config file, via JVM arguments, or via the system environment. Fleet will first look in the configuration file, then JVM runtime, and finally in the system environment. It will load the first value it finds, which can be useful when needing to override specific properties.

    {% hint style=\"info\" %} If you place a property in the system environment, ensure that the property uses underscores rather than periods. This is due to a limitation in BASH environments where exported variables must not contain this character. E.g. fleet.app.port=8080 becomes export fleet_app_port=8080

    Property Name Purpose fleet.app.port The port which the application will be running under. fleet.admin.secret A string used as part of the password key derivation process. This secret is prepended to the raw password before its key is derived, providing further pseudo-randomness to hashed passwords. Once set, this must not be changed! It is vital to remain the same, as it will be used during the password verification step. If Fleet is restarted with this removed or set differently, the password verification process will fail because previously hashed passwords will have been derived with the old secret. fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver fleet.database.url The full JDBC connection string to the database. fleet.database.username The username of the SQL user which will be managing the data in the Fleet database. This should have full GRANT access to the fleet database as it also manages any database migrations. fleet.database.password The password for the SQL user"},{"location":"general/fleet/#runtime-arguments","title":"Runtime Arguments","text":"

    As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime.

    {% hint style=\"info\" %} Unlike the properties defined above, these properties are only accessed via the JVM arguments (-D).

    Runtime Argument Purpose fleet.config.base The absolute path of the configuration file. fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended. fleet.nuke.database Be very careful. This will tell Fleet to completely wipe and rebuild its database. This can be useful if the owner deems the database to be too far out of synchronisation with Docker Hub, or if images have since been removed but are still showing in Fleet. fleet.skip.sync.on.startup By default, Fleet will run a synchronisation process when it first starts up. Setting this flag will tell it to skip the first run. The next synchronisation will be at the set interval."},{"location":"general/fleet/#default-user","title":"Default User","text":"

    When starting Fleet for the first time it will create a default user in order for you to log in and manage the repositories/images synchronised by the application. The default username and password are:

    Username: admin

    Password: admin

    {% hint style=\"warning\" %} You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.

    "},{"location":"general/running-our-containers/","title":"Running LinuxServer Containers","text":""},{"location":"general/running-our-containers/#image-structure","title":"Image Structure","text":""},{"location":"general/running-our-containers/#base-images","title":"Base Images","text":"

    We have curated various base images which our main application images derive from. This is beneficial for two main reasons:

    • A common dependency base between multiple images, reducing the likelihood of variation between two or more applications that share the same dependencies.
    • Reduction in image footprint on your host machine by fully utilising Docker's image layering system. Multiple containers running locally that share the same base image will reuse that image and any of its ancestors.
    "},{"location":"general/running-our-containers/#the-config-volume","title":"The /config volume","text":"

    To help reduce variation between our images, we have adopted a common structure pattern for application config and dependent directories. This means that each image has its own internal /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume.

    We do this because we believe that it makes it easier to answer the common question of \"where does the application data get persisted?\" - the answer being \"always in /config\". If you don't map this directory when creating your containers, the config will only last as long as the lifespan of the container itself!

    "},{"location":"general/running-our-containers/#creating-a-container","title":"Creating a Container","text":"

    To create a container from one of our images, you must use either docker create or docker run. Each image follows the same pattern in the command when creating a container:

    docker create \\\n--name=<container_name> \\\n-v <path_to_data>:/config \\\n-e PUID=<uid> \\\n-e PGID=<gid> \\\n-p <host_port>:<app_port> \\\nlinuxserver/<image_name>\n
    "},{"location":"general/swag/","title":"SWAG","text":"

    The goal of this guide is to give you ideas on what can be accomplished with the LinuxServer SWAG docker image and to get you started. We will explain some of the basic concepts and limitations, and then we'll provide you with common examples. If you have further questions, you can ask on our forum or join our Discord for conversations: https://discord.gg/YWrKVTn

    "},{"location":"general/swag/#table-of-contents","title":"Table of Contents","text":"
    • SWAG
    • Table of Contents
    • Introduction
      • What are SSL certs?
      • What is Let's Encrypt (and/or ZeroSSL)?
    • Creating a SWAG container
      • docker cli
      • docker-compose
      • Authorization method
      • Cert Provider (Let's Encrypt vs ZeroSSL)
      • Port forwards
      • Docker networking
    • Container setup examples
      • Create container via http validation
      • Create container via dns validation with a wildcard cert
      • Create container via duckdns validation with a wildcard cert
    • Web hosting examples
      • Simple html web page hosting
      • Hosting a Wordpress site
    • Reverse Proxy
      • Preset proxy confs
      • Understanding the proxy conf structure
      • Subdomain proxy conf
      • Subfolder proxy conf
      • Ombi subdomain reverse proxy example
      • Nextcloud subdomain reverse proxy example
      • Plex subfolder reverse proxy example
      • Using Heimdall as the home page at domain root
    • Troubleshooting
      • Common errors
      • 404
      • 502
    • Final Thoughts
      • How to Request Support
    "},{"location":"general/swag/#introduction","title":"Introduction","text":""},{"location":"general/swag/#what-are-ssl-certs","title":"What are SSL certs?","text":"

    SSL certs allow users of a service to communicate via encrypted data transmitted up and down. Third party trusted certs also allow users to make sure that the remote service they are connecting to is really who they say they are and not someone else in the middle. When we run a web server for reasons like hosting websites or reverse proxying services on our own domain, we need to set it up with third party trusted ssl certs so client browsers trust it and communicate with it securely. When you connect to a website with a trusted cert, most browsers show a padlock icon next to the address bar to indicate that. Without a trusted cert (ie. with self signed cert) most browsers show warning pages or may block access to the website as the website identity cannot be confirmed via a trusted third party.

    "},{"location":"general/swag/#what-is-lets-encrypt-andor-zerossl","title":"What is Let's Encrypt (and/or ZeroSSL)?","text":"

    In the past, the common way to get a trusted ssl cert was to contact one of the providers, send them the relevant info to prove ownership of a domain and pay for the service. Nowadays, with Let's Encrypt and ZeroSSL, one can get free certs via automated means.

    The SWAG docker image, published and maintained by LinuxServer.io, makes setting up a full-fledged web server with auto generated and renewed ssl certs very easy. It is essentially an nginx webserver with php7, fail2ban (intrusion prevention) and Let's Encrypt cert validation built-in. It is just MySQL short of a LEMP stack and therefore is best paired with our MariaDB docker image.

    "},{"location":"general/swag/#creating-a-swag-container","title":"Creating a SWAG container","text":"

    Most of the initial settings for getting a webserver with ssl certs up are done through the docker run/create or compose yaml parameters. Here's a list of all the settings available including the optional ones. It is safe to remove unnecessary parameters for different scenarios.

    "},{"location":"general/swag/#docker-cli","title":"docker cli","text":"
    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=yourdomain.url \\\n-e SUBDOMAINS=www, \\\n-e VALIDATION=http \\\n-e CERTPROVIDER= `#optional` \\\n-e DNSPLUGIN=cloudflare `#optional` \\\n-e DUCKDNSTOKEN=<token> `#optional` \\\n-e EMAIL=<e-mail> `#optional` \\\n-e ONLY_SUBDOMAINS=false `#optional` \\\n-e EXTRA_DOMAINS=<extradomains> `#optional` \\\n-e STAGING=false `#optional` \\\n-p 443:443 \\\n-p 80:80 `#optional` \\\n-v </path/to/appdata/config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n
    "},{"location":"general/swag/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=yourdomain.url\n- SUBDOMAINS=www,\n- VALIDATION=http\n- CERTPROVIDER= #optional\n- DNSPLUGIN=cloudflare #optional\n- DUCKDNSTOKEN=<token> #optional\n- EMAIL=<e-mail> #optional\n- ONLY_SUBDOMAINS=false #optional\n- EXTRA_DOMAINS=<extradomains> #optional\n- STAGING=false #optional\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 443:443\n- 80:80 #optional\nrestart: unless-stopped\n
    "},{"location":"general/swag/#authorization-method","title":"Authorization method","text":"

    Our image currently supports three different methods to validate domain ownership:

    • http:
    • Let's Encrypt (acme) server connects to domain on port 80
    • Can be owned domain or a dynamic dns address
    • dns:
    • Let's Encrypt (acme) server connects to dns provider
    • Api credentials and settings entered into ini files under /config/dns-conf/
    • Supports wildcard certs
    • Need to have own domain name (non-free)
    • duckdns:
    • Let's Encrypt (acme) server connects to DuckDNS
    • Supports wildcard certs (only for the sub-subdomains)
    • No need for own domain (free)

    The validation is performed when the container is started for the first time. Nginx won't be up until ssl certs are successfully generated.

    The certs are valid for 90 days. The container will check the cert expiration status every night and if they are to expire within 30 days, it will attempt to auto-renew. If your certs are about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the auto-renewals failed.

    "},{"location":"general/swag/#cert-provider-lets-encrypt-vs-zerossl","title":"Cert Provider (Let's Encrypt vs ZeroSSL)","text":"

    As of January 2021, SWAG supports getting certs validated by either Let's Encrypt or ZeroSSL. Both services use the ACME protocol as the underlying method to validate ownership. Our Certbot client in the SWAG image is ACME compliant and therefore supports both services.

    Although very similar, ZeroSSL does (at the time of writing) have a couple of advantages over Let's Encrypt:

    • ZeroSSL provides unlimited certs via ACME and has no rate limits or throttling (it's quite common for new users to get throttled by Let's Encrypt due to multiple unsuccessful attempts to validate)
    • ZeroSSL provides a web interface that allows users to list and manage the certs they have received

    SWAG currently defaults to Let's Encrypt as the cert provider so as not to break existing installs, however users can override that behavior by setting the environment variable CERTPROVIDER=zerossl to retrieve a cert from ZeroSSL instead. The only gotcha is that ZeroSSL requires the EMAIL env var to be set so the certs can be tied to a ZeroSSL account for management over their web interface.

    "},{"location":"general/swag/#port-forwards","title":"Port forwards","text":"

    Port 443 mapping is required for access through https://domain.com. However, you don't necessarily need to have it listen on port 443 on the host server. All that is needed is to have port 443 on the router (wan) somehow forward to port 443 inside the container, while it can go through a different port on the host.

    For instance, it is ok to have port 443 on router (wan) forward to port 444 on the host, and then map port 444 to port 443 in docker run/create or compose yml.

    Port 80 forwarding is required for http validation only. Same rule as above applies, and it's OK to go from 80 on the router to 81 on the host, mapped to 80 in the container.

    "},{"location":"general/swag/#docker-networking","title":"Docker networking","text":"

    SWAG container happily runs with bridge networking. However, the default bridge network in docker does not allow containers to connect each other via container names used as dns hostnames. Therefore, it is recommended to first create a user defined bridge network and attach the containers to that network.

    If you are using docker-compose, and your services are on the same yaml, you do not need to do this, because docker-compose automatically creates a user defined bridge network and attaches each container to it as long as no other networking option is defined in their config.

    For the below examples, we will use a network named lsio. We can create it via docker network create lsio. After that, any container that is created with --net=lsio can ping each other by container name as dns hostname.

    Keep in mind that dns hostnames are meant to be case-insensitive, however container names are case-sensitive. For container names to be used as dns hostnames in nginx, they should be all lowercase as nginx will convert them to all lowercase before trying to resolve.

    "},{"location":"general/swag/#container-setup-examples","title":"Container setup examples","text":""},{"location":"general/swag/#create-container-via-http-validation","title":"Create container via http validation","text":"

    Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com and ombi.linuxserver-test.com. On the router, forward ports 80 and 443 to your host server. On your dns provider (if using your own domain), create an A record for the main domain and point it to your server IP (wan). Also create CNAMES for www and ombi and point them to the A record for the domain.

    With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=www,ombi \\\n-e VALIDATION=http \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Once created, we do docker start swag to start it.

    With docker compose, we can use the following yml:

    ---\nversion: \"2.1\"\nservices:\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=www,ombi\n- VALIDATION=http\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    We can fire up the container with docker-compose up -d

    After the container is started, we'll watch the logs with docker logs swag -f. After some initial initialization, we will see the validation steps. After all the steps, it should print Server ready in the logs.

    Now we can browse to https://www.linuxserver-test.com and we'll see the default landing page displayed.

    "},{"location":"general/swag/#create-container-via-dns-validation-with-a-wildcard-cert","title":"Create container via dns validation with a wildcard cert","text":"

    Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com, ombi.linuxserver-test.com and any other subdomain possible. On the router, we'll forward port 443 to our host server (Port 80 forwarding is optional).

    We'll need to make sure that we are using a dns provider that is supported by this image. Currently the following dns plugins are supported: cloudflare, cloudxns, digitalocean, dnsimple, dnsmadeeasy, google, luadns, nsone, ovh, rfc2136 and route53. Your dns provider by default is the provider of your domain name and if they are not supported, it is very easy to switch to a different dns provider. Cloudflare is recommended due to being free and reliable. To switch to Cloudflare, you can register for a free account and follow their steps to point the nameservers to Cloudflare. The rest of the instructions assume that we are using the cloudflare dns plugin.

    On our dns provider, we'll create an A record for the main domain and point it to our server IP (wan). We'll also create a CNAME for * and point it to the A record for the domain. On Cloudflare, we'll click on the orange cloud to turn it grey so that it is dns only and not cached/proxied by Cloudflare, which would add more complexities.

    Now, let's get the container set up.

    With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=dns \\\n-e DNSPLUGIN=cloudflare \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    And we start the container via docker start swag

    With docker compose, we'll use:

    ---\nversion: \"2.1\"\nservices:\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=wildcard\n- VALIDATION=dns\n- DNSPLUGIN=cloudflare\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    Then we'll fire up the container via docker-compose up -d

    After the container is started, we'll watch the logs with docker logs swag -f. After some init steps, we'll notice that the container will give an error during validation due to wrong credentials. That's because we didn't enter the correct credentials for the Cloudflare api yet. We can browse to the location /config/dns-conf which is mapped from the host location (according to above settings) /home/aptalca/appdata/swag/dns-conf/ and edit the correct ini file for our dns provider. For Cloudflare, we'll enter our e-mail address and the api key. The api key can be retrieved by going to the Overview page and clicking on Get your API key link. We'll need the Global API Key.

    Once we enter the credentials into the ini file, we'll restart the docker container via docker restart swag and again watch the logs. After successful validation, we should see the notice Server ready and our webserver should be up and accessible at https://www.linuxserver-test.com.

    "},{"location":"general/swag/#create-container-via-duckdns-validation-with-a-wildcard-cert","title":"Create container via duckdns validation with a wildcard cert","text":"

    We will first need to get a subdomain from DuckDNS. Let's assume we get linuxserver-test so our url will be linuxserver-test.duckdns.org. Then we'll need to make sure that the subdomain points to our server IP (wan) on the DuckDNS website. We can always use our DuckDNS docker image to keep the IP up to date. Don't forget to get the token for your account from DuckDNS. On the router, we'll forward port 443 to our host server (Port 80 forward is optional).

    Now, let's get the container set up.

    With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.duckdns.org \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=duckdns \\\n-e DUCKDNSTOKEN=97654867496t0877648659765854 \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    And we start the container via docker start swag

    With docker compose, we'll use:

    ---\nversion: \"2.1\"\nservices:\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.duckdns.org\n- SUBDOMAINS=wildcard\n- VALIDATION=duckdns\n- DUCKDNSTOKEN=97654867496t0877648659765854\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    Then we'll fire up the container via docker-compose up -d

    After the container is started, we'll watch the logs with docker logs swag -f. We'll see some initialization and then we will see the validation steps. After all the steps, it should print Server ready in the logs.

    Now we can access the webserver by browsing to https://www.linuxserver-test.duckdns.org.

    NOTICE: Due to a DuckDNS limitation, our cert only covers the wildcard subdomains, but it doesn't cover the main url. So if we try to access https://linuxserver-test.duckdns.org, we'll see a browser warning about an invalid ssl cert. But accessing it through the www (or ombi or any other) subdomain should work fine.

    "},{"location":"general/swag/#web-hosting-examples","title":"Web hosting examples","text":""},{"location":"general/swag/#simple-html-web-page-hosting","title":"Simple html web page hosting","text":"

    Once we have a working container, we can drop our web documents in and modify the nginx config files to set up our webserver.

    All the necessary files are under /config which is mapped from the host location (set by above examples) /home/aptalca/appdata/swag.

    We can drop all of our web/html files into /config/www.

    The main site config nginx uses can be found at /config/nginx/site-confs/default. Don't delete this file, as it will be regenerated on container restart, but feel free to modify as needed. By default, it is listening on port 443, and the root folder is set to /config/www, so if you drop a page1.html into that location, it will be accessible at https://linuxserver-test.com/page1.html.

    To enable listening on port 80 and automatically redirecting to port 443 for enforcing ssl, uncomment the lines at the top of the default site config so it reads:

    # redirect all traffic to https\nserver {\nlisten 80;\nlisten [::]:80;\nserver_name _;\nreturn 301 https://$host$request_uri;\n}\n

    After any changes to the config files, simply restart the container via docker restart swag to reload the nginx config.

    "},{"location":"general/swag/#hosting-a-wordpress-site","title":"Hosting a Wordpress site","text":"

    Wordpress requires a mysql database. For that, we'll use the linuxserver MariaDB docker image.

    Here's a docker compose stack to get both containers set up. For this exercise, we'll utilize the cloudflare dns plugin for Let's Encrypt validation, but you can use any other method to set it up as described in this linked section:

    ---\nversion: \"2.1\"\nservices:\nmariadb:\nimage: lscr.io/linuxserver/mariadb\ncontainer_name: mariadb\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_ROOT_PASSWORD=mariadbpassword\n- TZ=Europe/London\n- MYSQL_DATABASE=WP_database\n- MYSQL_USER=WP_dbuser\n- MYSQL_PASSWORD=WP_dbpassword\nvolumes:\n- /home/aptalca/appdata/mariadb:/config\nrestart: unless-stopped\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=wildcard\n- VALIDATION=dns\n- DNSPLUGIN=cloudflare\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\ndepends_on:\n- mariadb\nrestart: unless-stopped\n

    And here are the docker cli versions (make sure you already created the lsio network as described above: Mariadb:

    docker create \\\n--name=mariadb \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e MYSQL_ROOT_PASSWORD=mariadbpassword \\\n-e TZ=Europe/London \\\n-e MYSQL_DATABASE=WP_database \\\n-e MYSQL_USER=WP_dbuser \\\n-e MYSQL_PASSWORD=WP_dbpassword \\\n-v /home/aptalca/appdata/mariadb:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mariadb\n

    SWAG:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=dns \\\n-e DNSPLUGIN=cloudflare \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Once the SWAG container is set up with ssl certs and the webserver is up, we'll download the latest Wordpress and untar it into our www folder:

    wget https://wordpress.org/latest.tar.gz\ntar xvf latest.tar.gz -C /home/aptalca/appdata/swag/www/\nrm latest.tar.gz\n

    Now that we have all the Wordpress files under the container's /config/www/wordpress folder, we'll need to make some adjustments to the nginx configurations.

    • Find the line in /config/nginx/site-confs/default that reads root /config/www; and change it to root /config/www/wordpress;
    • Find the line in /config/nginx/site-confs/default that reads try_files $uri $uri/ /index.html /index.php$is_args$args =404; and change it to try_files $uri $uri/ /index.html /index.php$is_args$args;

    Alternatively, if you need to run multiple instances of Wordpress, you can leave /config/nginx/site-confs/default entirely unchanged and create new site-confs for each instance of Wordpress. The new site-confs will be slimmed down copies of /config/nginx/site-confs/default. This assumes you will run each instance on a separate subdomain. If you would prefer to have each Wordpress site on a different top level domain, be sure to add each domain to the EXTRA_DOMAINS environment variable.

    Ex: /config/nginx/site-confs/myfirstsubdomain.linuxserver-test.com.conf

    server {\nlisten 443 ssl http2; # REMOVED default_server\nlisten [::]:443 ssl http2; # REMOVED default_server\n\nserver_name myfirstsubdomain.linuxserver-test.com; # PUT YOUR DOMAIN HERE\n\nroot /config/sites/myfirstsubdomain.linuxserver-test.com/www; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE\nindex index.html index.htm index.php;\n\nlocation / {\ntry_files $uri $uri/ /index.html /index.php$is_args$args; # REMOVED =404\n}\n\nlocation ~ ^(.+\\.php)(.*)$ {\nfastcgi_split_path_info ^(.+\\.php)(.*)$;\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_index index.php;\ninclude /etc/nginx/fastcgi_params;\n}\n\n# deny access to .htaccess/.htpasswd files\nlocation ~ /\\.ht {\ndeny all;\n}\n}\n

    /config/nginx/site-confs/mysecondsubdomain.linuxserver-test.com.conf

    server {\nlisten 443 ssl http2; # REMOVED default_server\nlisten [::]:443 ssl http2; # REMOVED default_server\n\nserver_name mysecondsubdomain.linuxserver-test.com; # PUT YOUR DOMAIN HERE\n\nroot /config/sites/mysecondsubdomain.linuxserver-test.com/www; # CREATE THIS DIRECTORY STRUCTURE AND PUT WORDPRESS FILES HERE\nindex index.html index.htm index.php;\n\nlocation / {\ntry_files $uri $uri/ /index.html /index.php$is_args$args; # REMOVED =404\n}\n\nlocation ~ ^(.+\\.php)(.*)$ {\nfastcgi_split_path_info ^(.+\\.php)(.*)$;\nfastcgi_pass 127.0.0.1:9000;\nfastcgi_index index.php;\ninclude /etc/nginx/fastcgi_params;\n}\n\n# deny access to .htaccess/.htpasswd files\nlocation ~ /\\.ht {\ndeny all;\n}\n}\n

    Now that you have completed changing your nginx configurations you need to restart the SWAG container.

    Now we should be able to access our Wordpress config page at https://linuxserver-test.com/wp-admin/install.php. We'll go ahead and enter mariadb as the Database Host address (we are using the container name as the dns hostname since both containers are in the same user defined bridge network), and also enter the Database Name, user and password we used in the mariadb config above (WP_database, WP_dbuser and WP_dbpassword).

    Once we go through the rest of the install steps, our Wordpress instance should be fully set up and available at https://linuxserver-test.com.

    If you would like to have http requests on port 80 enabled and auto redirected to https on port 443, uncomment the relevant lines at the top of the default site config to read:

    # redirect all traffic to https\nserver {\nlisten 80;\nlisten [::]:80;\nserver_name _;\nreturn 301 https://$host$request_uri;\n}\n
    "},{"location":"general/swag/#reverse-proxy","title":"Reverse Proxy","text":"

    A reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as if they originated from the Web server itself (Shamelessly borrowed from another post on our blog).

    In this case, a user or a client browser can connect to our SWAG container via https on port 443, request a service such as Ombi, then our SWAG container connects to the ombi container, retrieves the data and passes it on to the client via https with our trusted cert. The connection to ombi is local and does not need to be encrypted, but all communication between our SWAG container and the client browser will be encrypted.

    "},{"location":"general/swag/#preset-proxy-confs","title":"Preset proxy confs","text":"

    Our SWAG image comes with a list of preset reverse proxy confs for popular apps and services. They are hosted on Github and are pulled into the /config/nginx/proxy-confs folder as inactive sample files. To activate, one must rename a conf file to remove .sample from the filename and restart the SWAG container. Any proxy conf file in that folder with a name that matches *.subdomain.conf or *.subfolder.conf will be loaded in nginx during container start.

    Most proxy confs work without any modification, but some may require other changes. All the required changes are listed at the top of each proxy conf. The conf files use container names to reach other containers and therefore the proxied containers should be named the same as listed in our documentation for each container.

    The conf files also require that the SWAG container is in the same user defined bridge network as the other container so they can reach each other via container name as dns hostnames. Make sure you follow the instructions listed above in the Docker networking section.

    "},{"location":"general/swag/#understanding-the-proxy-conf-structure","title":"Understanding the proxy conf structure","text":""},{"location":"general/swag/#subdomain-proxy-conf","title":"Subdomain proxy conf","text":"

    Here's the preset proxy conf for Heimdall as a subdomain (ie. https://heimdall.linuxserver-test.com):

    # make sure that your dns has a cname set for heimdall\n\nserver {\nlisten 443 ssl;\nlisten [::]:443 ssl;\n\nserver_name heimdall.*;\n\ninclude /config/nginx/ssl.conf;\n\nclient_max_body_size 0;\n\n# enable for ldap auth, fill in ldap details in ldap.conf\n#include /config/nginx/ldap.conf;\n\n# enable for Authelia\n#include /config/nginx/authelia-server.conf;\n\nlocation / {\n# enable the next two lines for http auth\n#auth_basic \"Restricted\";\n#auth_basic_user_file /config/nginx/.htpasswd;\n\n# enable the next two lines for ldap auth\n#auth_request /auth;\n#error_page 401 =200 /ldaplogin;\n\n# enable for Authelia\n#include /config/nginx/authelia-location.conf;\n\ninclude /config/nginx/proxy.conf;\nresolver 127.0.0.11 valid=30s;\nset $upstream_app heimdall;\nset $upstream_port 443;\nset $upstream_proto https;\nproxy_pass $upstream_proto://$upstream_app:$upstream_port;\n\n}\n}\n

    Let's dissect this conf to look at what each directive or block does.

    server {\n}\n

    This is our server block. Whenever nginx gets a request from a client, it determines which server block should be processed based on the destination server name, port and other relevant info, and the matching server block determines how nginx handles and responds to the request.

        listen 443 ssl;\nlisten [::]:443 ssl;\n

    This means that only requests coming to port 443 will match this server block.

        server_name heimdall.*;\n

    Only destination addresses that match heimdall.* will match this server block.

        include /config/nginx/ssl.conf;\n

    This directive injects the contents of our ssl.conf file here, which contains all ssl related settings (cert location, ciphers used, etc.).

        client_max_body_size 0;\n

    Removes the size limitation on uploads (default 1MB).

        # enable for ldap auth, fill in ldap details in ldap.conf\n#include /config/nginx/ldap.conf;\n

    Commented out (disabled) by default. When enabled, it will inject the contents of ldap.conf, necessary settings for LDAP auth.

        # enable for Authelia\n#include /config/nginx/authelia-server.conf;\n

    Commented out (disabled) by default. When enabled, it will inject the contents of authelia-server.conf, necessary settings for Authelia integration.

        location / {\n}\n

    Location blocks are used for subfolders or paths. After a server block is matched, nginx will look at the subfolder or path requested to match one of the location blocks inside the selected server block. This particular block in our example is for / so it will match any subfolder or path at this address.

            # enable the next two lines for http auth\n#auth_basic \"Restricted\";\n#auth_basic_user_file /config/nginx/.htpasswd;\n

    Commented out (disabled) by default. When enabled, it will use .htpasswd to perform user/pass authentication before allowing access.

            # enable the next two lines for ldap auth\n#auth_request /auth;\n#error_page 401 =200 /login;\n

    Commented out (disabled) by default. When enabled, it will use LDAP authentication before allowing access.

            # enable for Authelia\n#include /config/nginx/authelia-location.conf;\n

    Commented out (disabled) by default. When enabled, it will use Authelia authentication before allowing access.

            include /config/nginx/proxy.conf;\n

    Injects the contents of proxy.conf, which contains various directives and headers that are common for proxied connections.

            resolver 127.0.0.11 valid=30s;\n

    Tells nginx to use the docker dns to resolve the IP address when the container name is used as address in the next line.

            set $upstream_app heimdall;\nset $upstream_port 443;\nset $upstream_proto https;\nproxy_pass $upstream_proto://$upstream_app:$upstream_port;\n

    This is a bit of a tricky part. Normally, we could just put in the directive proxy_pass https://heimdall:443; and expect nginx to connect to Heimdall via its container name used as a dns hostname. Although it works for the most part, nginx has an annoying habit. During start, nginx checks all dns hostnames used in proxy_pass statements and if any one of them is not accessible, it refuses to start. We really don't want a stopped proxied container to prevent our webserver from starting up, so we use a trick.

    If the proxy_pass statement contains a variable instead of a dns hostname, nginx doesn't check whether it's accessible or not during start. So here we are setting 3 variables, one named upstream_app with the value of heimdall, one named $upstream_port, with the value of the internal heimdall port 443, and one named $upstream_proto with the value set to https. We we use these variables as the address in the proxy_pass directive. That way, if the heimdall container is down for any reason, nginx can still start. When using a variable instead of hostname, we also have to set the resolver to docker dns in the previous line.

    If the proxied container is not in the same user defined bridge network as SWAG (could be on a remote host, could be using host networking or macvlan), we can change the value of $upstream_app to an IP address instead: set $upstream_app 192.168.1.10;

    "},{"location":"general/swag/#subfolder-proxy-conf","title":"Subfolder proxy conf","text":"

    Here's the preset proxy conf for mytinytodo via a subfolder

    # works with https://github.com/breakall/mytinytodo-docker\n# set the mtt_url to 'https://your.domain.com/todo/' in db/config.php\n\nlocation /todo {\nreturn 301 $scheme://$host/todo/;\n}\nlocation ^~ /todo/ {\n\n# enable the next two lines for http auth\n#auth_basic \"Restricted\";\n#auth_basic_user_file /config/nginx/.htpasswd;\n\n# enable the next two lines for ldap auth, also customize and enable ldap.conf in the default conf\n#auth_request /auth;\n#error_page 401 =200 /ldaplogin;\n\n# enable for Authelia, also enable authelia-server.conf in the default site config\n#include /config/nginx/authelia-location.conf;\n\ninclude /config/nginx/proxy.conf;\nresolver 127.0.0.11 valid=30s;\nset $upstream_app mytinytodo;\nset $upstream_port 80;\nset $upstream_proto http;\nproxy_pass $upstream_proto://$upstream_app:$upstream_port/;\n}\n

    Unlike the subdomain proxy confs, here we do not have a server block. That is because all of the subfolder proxy confs get injected into the main server block of our root domain defined in the default site conf. So here we are only defining the location block for our specific subfolders.

    Many of the elements are the same as the subdomain ones, so for those you can refer to the previous section. Let's take a look at some of the differences.

    # works with https://github.com/breakall/mytinytodo-docker\n# set the mtt_url to 'https://your.domain.com/todo/' in db/config.php\n

    These are the instructions to get the tinytodo container ready to work with our reverse proxy.

    location ^~ /todo {\nreturn 301 $scheme://$host/todo/;\n}\n

    Redirects requests for https://linuxserver-test.com/todo to https://linuxserver-test.com/todo/ (added forward slash at the end).

    location ^~ /todo/ {\n}\n

    Any requests sent to nginx where the destination starts with https://linuxserver-test.com/todo/ will match this location block.

        set $upstream_app mytinytodo;\nset $upstream_port 80;\nset $upstream_proto http;\nproxy_pass $upstream_proto://$upstream_app:$upstream_port/;\n

    Same as the previous example, we set a variable $upstream_app with the value mytinytodo and tell nginx to use the variable as the address. Keep in mind that the port listed here is the container port because nginx is connecting to this container directly via the docker network. So if our mytinytodo container has a port mapping of -p 8080:80, we still set $upstream_port variable to 80.

    Nginx has an interesting behavior displayed here. Even though we define http://$upstream_mytinytodo:80/ as the address nginx should proxy, nginx actually connects to http://$upstream_mytinytodo:80/todo. Whenever we use a variable as part of the proxy_pass url, nginx automatically appends the defined location (in this case /todo) to the end of the proxy_pass url before it connects. If we include the subfolder, nginx will try to connect to http://$upstream_mytinytodo:80/todo/todo and will fail.

    "},{"location":"general/swag/#ombi-subdomain-reverse-proxy-example","title":"Ombi subdomain reverse proxy example","text":"

    In this example, we will reverse proxy Ombi at the address https://ombi.linuxserver-test.com.

    First let's make sure that we have a CNAME for ombi set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio) as described above. We also need to make sure that port 443 on our router is forwarded to the correct port on our server.

    Here's a docker compose stack we can use to set up both containers:

    ---\nversion: \"2.1\"\nservices:\nombi:\nimage: lscr.io/linuxserver/ombi\ncontainer_name: ombi\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /home/aptalca/appdata/ombi:/config\nports:\n- 3579:3579\nrestart: unless-stopped\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=wildcard\n- VALIDATION=dns\n- DNSPLUGIN=cloudflare\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    And here are the docker cli versions: Ombi:

    docker create \\\n--name=ombi \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3579:3579 \\\n-v /home/aptalca/appdata/ombi:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ombi\n

    SWAG:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=dns \\\n-e DNSPLUGIN=cloudflare \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Once our containers up and running (and we confirm we can reach the placeholder page at https://linuxserver-test.com), we simply rename the file ombi.subdomain.conf.sample under /config/nginx/proxy-confs/ to ombi.subdomain.conf and we restart the SWAG container. Now when we browser to https://ombi.linuxserver-test.com we should see the Ombi gui.

    "},{"location":"general/swag/#nextcloud-subdomain-reverse-proxy-example","title":"Nextcloud subdomain reverse proxy example","text":"

    Nextcloud is a bit trickier because the app has various security measures built-in, forcing us to configure certain options manually.

    As with the other examples, let's make sure that we have a CNAME for nextcloud set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A record that points to our server IP. If we are using the docker cli method, we also need to create the user defined bridge network (here named lsio) as described above. For DuckDNS, we do not need to create CNAMES, as all sub-subdomains automatically point to the same IP as our custom subdomain, but we need to make sure that it is the correct IP address for our server. We also need to make sure that port 443 on our router is forwarded to the correct port on our server.

    In this example we'll use the duckdns wildcard cert, but you can use any Let's Encrypt validation you like as described above

    Here's a docker compose stack to set up our SWAG, nextcloud and mariadb containers:

    ---\nversion: \"2.1\"\nservices:\nnextcloud:\nimage: lscr.io/linuxserver/nextcloud\ncontainer_name: nextcloud\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /home/aptalca/appdata/nextcloud/config:/config\n- /home/aptalca/appdata/nextcloud/data:/data\ndepends_on:\n- mariadb\nrestart: unless-stopped\nmariadb:\nimage: lscr.io/linuxserver/mariadb\ncontainer_name: mariadb\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_ROOT_PASSWORD=mariadbpassword\n- TZ=Europe/London\n- MYSQL_DATABASE=nextcloud\n- MYSQL_USER=ncuser\n- MYSQL_PASSWORD=ncpassword\nvolumes:\n- /home/aptalca/appdata/mariadb:/config\nrestart: unless-stopped\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.duckdns.org\n- SUBDOMAINS=wildcard\n- VALIDATION=duckdns\n- DUCKDNSTOKEN=97654867496t0877648659765854\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    And here are the docker cli versions: Nextcloud:

    docker create \\\n--name=nextcloud \\\n--net=lsio\n  -e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-v /home/aptalca/appdata/nextcloud/config:/config \\\n-v /home/aptalca/appdata/nextcloud/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nextcloud\n

    Mariadb:

    docker create \\\n--name=mariadb \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e MYSQL_ROOT_PASSWORD=mariadbpassword \\\n-e TZ=Europe/London \\\n-e MYSQL_DATABASE=nextcloud \\\n-e MYSQL_USER=ncuser \\\n-e MYSQL_PASSWORD=ncpassword \\\n-v /home/aptalca/appdata/mariadb:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mariadb\n

    SWAG:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.duckdns.org \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=duckdns \\\n-e DUCKDNSTOKEN=97654867496t0877648659765854 \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Now we find the file named nextcloud.subdomain.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to nextcloud.subdomain.conf, then restart the SWAG container.

    If this is the first time we are accessing Nextcloud (we've never accessed it locally before), we can simply navigate to https://nextcloud.linuxserver-test.duckdns.org and we should see the Nextcloud set up page. We'll fill out the info, use the mariadb user ncuser and the password we selected in the environment variable (ncpassword in the above example) and we'll use mariadb as the Database Host address (container name as dns hostname).

    We should then be able to go through the intro slides and then see the Nextcloud dashboard with our shiny padlock icon next to the address bar.

    If this is an existing Nextcloud instance, or we set it up locally via the host IP address and local port, Nextcloud will reject proxied connections. In that case, we have to follow the instructions at the top of the nextcloud.subdomain.conf file:

    # assuming this container is called \"swag\", edit your nextcloud container's config\n# located at /config/www/nextcloud/config/config.php and add the following lines before the \");\":\n#  'trusted_proxies' => ['swag'],\n#  'overwrite.cli.url' => 'https://nextcloud.your-domain.com/',\n#  'overwritehost' => 'nextcloud.your-domain.com',\n#  'overwriteprotocol' => 'https',\n#\n# Also don't forget to add your domain name to the trusted domains array. It should look somewhat like this:\n#  array (\n#    0 => '192.168.0.1:444', # This line may look different on your setup, don't modify it.\n#    1 => 'nextcloud.your-domain.com',\n#  ),\n

    These settings will tell Nextcloud to respond to queries where the destination address is our domain name.

    If you followed the above directions to set it up for the first time, you only need to add the line 'trusted_proxies' => ['swag'],, otherwise nextcloud 16+ shows a warning about incorrect reverse proxy settings. By default, HSTS is disabled in SWAG config, because it is a bit of a sledgehammer that prevents loading of any http assets on the entire domain. You can enable it in SWAG's ssl.conf.

    "},{"location":"general/swag/#plex-subfolder-reverse-proxy-example","title":"Plex subfolder reverse proxy example","text":"

    In this example, we will set up Plex as a subfolder so it will be accessible at https://linuxserver-test.com/plex. We will initially set up Plex with host networking through its local IP and will connect to it from the same subnet. If we are on a different subnet, or if using a bridge network, we can use the PLEX_CLAIM variable to automatically claim the server with our plex account.

    Once the Plex server is set up, it is safe to switch it to bridge networking from host.

    Here's a docker compose stack we can use to set up both containers:

    ---\nversion: \"2.1\"\nservices:\nplex:\nimage: lscr.io/linuxserver/plex\ncontainer_name: plex\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- VERSION=docker\nvolumes:\n- /home/aptalca/appdata/plex:/config\n- /home/aptalca/tvshows:/data/tvshows\n- /home/aptalca/movies:/data/movies\nrestart: unless-stopped\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=wildcard\n- VALIDATION=dns\n- DNSPLUGIN=cloudflare\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    Here are the docker cli versions: Plex:

    docker create \\\n--name=plex \\\n--net=host \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e VERSION=docker \\\n-v /home/aptalca/appdata/plex:/config \\\n-v /home/aptalca/tvshows:/data/tvshows \\\n-v /home/aptalca/movies:/data/movies \\\n--restart unless-stopped \\\nlscr.io/linuxserver/plex\n

    SWAG:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=dns \\\n-e DNSPLUGIN=cloudflare \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Once the containers are set up, we browse to http://LOCALSERVERIP:32400/web and set up our Plex server with our Plex account. Then we can find the file named plex.subfolder.conf.sample under our SWAG container's /config/nginx/proxy-confs folder and rename it to plex.subfolder.conf.

    If we are using bridge networking for our plex container, we can restart the SWAG container and we should be able to access Plex at https://linuxserver-test.com/plex.

    If we are using host networking for our plex container, we will also have to make one modification to the plex.subfolder.conf. We need to find the line that reads proxy_pass http://$upstream_plex:32400; and replace $upstream_plex with our Plex server's local IP address (ie. proxy_pass http://192.168.1.10:32400;). Then we can restart SWAG and access Plex at https://linuxserver-test.com/plex.

    If we want Plex to always use our domain to connect (including in mobile apps), we can add our url https://linuxserver-test.com/plex into the Custom server access URLs in Plex server settings. After that, it is OK to turn off remote access in Plex server settings and remove the port forwarding port 32400. After that, all connections to our Plex server will go through SWAG reverse proxy over port 443.

    "},{"location":"general/swag/#using-heimdall-as-the-home-page-at-domain-root","title":"Using Heimdall as the home page at domain root","text":"

    In this example, we will set Heimdall as our homepage at domain root so when we navigate to https://linuxserver-test.com we will reach Heimdall.

    As before, we need to make sure port 443 is properly forwarded to our server. We also need to make sure that if we are using the docker cli method, we need to create a user defined bridge network as defined above.

    Here's a docker compose stack we can use to set up both containers:

    ---\nversion: \"2.1\"\nservices:\nheimdall:\nimage: lscr.io/linuxserver/heimdall\ncontainer_name: heimdall\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /home/aptalca/appdata/heimdall:/config\nrestart: unless-stopped\nswag:\nimage: lscr.io/linuxserver/swag\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=linuxserver-test.com\n- SUBDOMAINS=wildcard\n- VALIDATION=dns\n- DNSPLUGIN=cloudflare\nvolumes:\n- /home/aptalca/appdata/swag:/config\nports:\n- 443:443\n- 80:80\nrestart: unless-stopped\n

    Here are the docker cli versions: Heimdall:

    docker create \\\n--name=heimdall \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-v /home/aptalca/appdata/heimdall:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/heimdall\n

    SWAG:

    docker create \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n--net=lsio \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=linuxserver-test.com \\\n-e SUBDOMAINS=wildcard \\\n-e VALIDATION=dns \\\n-e DNSPLUGIN=cloudflare \\\n-p 443:443 \\\n-p 80:80 \\\n-v /home/aptalca/appdata/swag:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag\n

    Once the containers are set up, we'll find the file named heimdall.subfolder.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to heimdall.subfolder.conf. If we look inside that conf file, we'll see that it is set to use location / {, which will cause an issue because there is already a location defined for / inside the default site config for SWAG. So we need to edit the default site config at /config/nginx/site-confs/default and comment out the location block for / inside our main server block so it reads:

        #location / {\n#    try_files $uri $uri/ /index.html /index.php?$args =404;\n#}\n

    That way, nginx will use the / location block from our heimdall proxy conf instead.

    After that, when we navigate to https://linuxserver-test.com, we'll see the Heimdall interface.

    If we want to password protect our new homepage, we can run the following on the host command line to create a new .htpasswd file: docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername. After which, we can activate authentication by editing the heimdall.subfolder.conf file to uncomment the relevant lines so it reads:

        # enable the next two lines for http auth\nauth_basic \"Restricted\";\nauth_basic_user_file /config/nginx/.htpasswd;\n
    "},{"location":"general/swag/#troubleshooting","title":"Troubleshooting","text":"

    We wrote a blogpost for the deprecated letsencrypt image diving into troubleshooting issues regarding dns and port-forwards, which still is a very good resource: blog.linuxserver.io

    "},{"location":"general/swag/#common-errors","title":"Common errors","text":""},{"location":"general/swag/#404","title":"404","text":"

    This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.

    "},{"location":"general/swag/#502","title":"502","text":"

    This error means that nginx can't talk to the application. There is a few common reasons for this:

    • The application and SWAG is not on the same custom docker network

      Further up we talk about how to set up Docker networking, however there are some other common traps

    • The container name does not match the application name.

      Covered in the section for Understanding the proxy conf structure

    • You manually changed the port.

      Also covered in the section for Understanding the proxy conf structure

    • The container originally ran with host networking, or the default bridge.

      In most cases the contents of /config/nginx/resolver.conf; should be ...resolver 127.0.0.11 valid=30s;, if this is not the case, you can:

    • Delete it, and restart the container to have it regenerate

    • Manually set the content(we wont override it)
    "},{"location":"general/swag/#final-thoughts","title":"Final Thoughts","text":"

    This image can be used in many different scenarios as it is a full fledged web server with some bells and whistles added. The above examples should be enough to get you started. For more information, please refer to the official documentation on either Github or Docker Hub. If you have questions or issues, or want to discuss and share ideas, feel free to visit our discord: https://discord.gg/YWrKVTn

    "},{"location":"general/swag/#how-to-request-support","title":"How to Request Support","text":"

    As you can see in this article, there are many different configurations, therefore we need to understand your exact setup before we can provide support. If you encounter a bug and confirm that it's a bug, please report it on our github thread. If you need help with setting it up, join our discord and upload the following info to a service like pastebin and post the link:

    • Docker run/create or compose yml you used
    • Full docker log (docker logs swag)
    • Any relevant conf files (default, nginx.conf or specific proxy conf)
    "},{"location":"general/understanding-puid-and-pgid/","title":"Understanding PUID and PGID","text":"

    {% hint style=\"info\" %} We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.

    "},{"location":"general/understanding-puid-and-pgid/#why-use-these","title":"Why use these?","text":"

    Docker runs all of its containers under the root user domain because it requires access to things like network configuration, process management, and your filesystem. This means that the processes running inside your containers also run as root. This kind of elevated access is not ideal for day-to-day use, and potentially gives applications the access to things they shouldn't (although, a strong understanding of volume and port mapping will help with this).

    Another issue is file management within the container's mapped volumes. If the process is running under root, all files and directories created during the container's lifespan will be owned by root, thus becoming inaccessible by you.

    Using the PUID and PGID allows our containers to map the container's internal user to a user on the host machine. All of our containers use this method of user mapping and should be applied accordingly.

    "},{"location":"general/understanding-puid-and-pgid/#using-the-variables","title":"Using the variables","text":"

    When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command:

    docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets\n

    Or, if you use docker-compose, add them to the environment: section:

    environment:\n- PUID=1000\n- PGID=1000\n

    It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid.

    id $user\n
    "},{"location":"general/updating-our-containers/","title":"Updating our containers","text":"

    Our images are updated whenever the upstream application or dependencies get changed, so make sure you're always running the latest version, as they may contain important bug fixes and new features.

    "},{"location":"general/updating-our-containers/#steps-required-to-update","title":"Steps required to update","text":"

    Docker containers are, for the most part, immutable. This means that important configuration such as volume and port mappings can't be easily changed once the container has been created. The containers created from our images run a very specific version of the application they wrap, so in order to update the application, you must recreate the container.

    "},{"location":"general/updating-our-containers/#stop-the-container","title":"Stop the container","text":"

    Firstly, stop the container.

    docker stop <container_name>\n
    "},{"location":"general/updating-our-containers/#remove-the-container","title":"Remove the container","text":"

    Once the container has been stopped, remove it.

    Important: Did you remember to persist the /config volume when you originally created the container? Bear in mind, you'll lose any configuration inside the container if this volume was not persisted. Read up on why this is important.

    docker rm <container_name>\n
    "},{"location":"general/updating-our-containers/#pull-the-latest-version","title":"Pull the latest version","text":"

    Now you can pull the latest version of the application image from Docker Hub.

    docker pull linuxserver/<image_name>\n
    "},{"location":"general/updating-our-containers/#recreate-the-container","title":"Recreate the container","text":"

    Finally, you can recreate the container. This is often cited as the most arduous task as it requires you to remember all of the mappings you set beforehand. You can help mitigate this step by using Docker Compose instead - this topic has been outlined in our documentation.

    docker create \\\n--name=<container_name> \\\n-v <path_to_data>:/config \\\n-e PUID=<uid> \\\n-e PGID=<gid> \\\n-p <host_port>:<app_port> \\\nlinuxserver/<image_name>\n
    "},{"location":"general/updating-our-containers/#docker-compose","title":"Docker Compose","text":"

    It is also possible to update a single container using Docker Compose:

    docker-compose pull linuxserver/<image_name>\ndocker-compose up -d <container_name>\n

    Or, to update all containers at once:

    docker-compose pull\ndocker-compose up -d\n
    "},{"location":"general/updating-our-containers/#removing-old-images","title":"Removing old images","text":"

    Whenever a Docker image is updated, a fresh version of that image gets downloaded and stored on your host machine. Doing this, however, does not remove the old version of the image. Eventually you will end up with a lot of disk space used up by stale images. You can prune old images from your system, which will free up space:

    docker image prune\n
    "},{"location":"general/volumes/","title":"Volumes","text":"

    In Docker terminology, a volume is a storage device that allows you to persist the data used and generated by each of your running containers. While a container remains alive (in either an active or inactive state), the data inside its user-space remains intact. However, if you decide to recreate a container, all data within that container is lost. Volumes are an intrinsic aspect of container management, so it is useful to know how to create them.

    There are two ways to map persistent storage to your containers; container volumes, and directory overlays. All of our images reference persistent data by means of directory overlays.

    "},{"location":"general/volumes/#mapping-a-volume-to-your-container","title":"Mapping a volume to your container","text":"

    Firstly, you must understand which directories from within your container you wish to persist. All of our images come with side-by-side documentation on which internal directories are used by the application. As mentioned in the Running our Containers documentation, the most common directory you will wish to persist is the /config directory.

    Before you create your container, first create a directory on the host machine that will act as the home for your persisted data. We recommend creating the directory /opt/appdata. Under this tree, you can create a single configuration directory for each of your containers.

    When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory:

    docker create --name my_container \\\n    -v /opt/appdata/my_config:/config \\\n    linuxserver/<an_image>\n

    The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory.

    Remember: When dealing with mapping overlays, it always reads host:container

    You can do this for as many directories as required by either you or the container itself. Our rule-of-thumb is to always map the /config directory as this contains pertinent runtime configuration for the underlying application. For applications that require further data, such as media, our documentation will clearly indicate which internal directories need mapping.

    "},{"location":"images/","title":"Images","text":"

    Each of our images requires their own specific configuration before you can begin making use of them. If you're new to our images, please take the time to read through our documentation.

    "},{"location":"images/docker-adguardhome-sync/","title":"adguardhome-sync","text":""},{"location":"images/docker-adguardhome-sync/#linuxserveradguardhome-sync","title":"linuxserver/adguardhome-sync","text":"

    Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.

    "},{"location":"images/docker-adguardhome-sync/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-adguardhome-sync/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases from GitHub"},{"location":"images/docker-adguardhome-sync/#application-setup","title":"Application Setup","text":"

    Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync.

    "},{"location":"images/docker-adguardhome-sync/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-adguardhome-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nadguardhome-sync:\nimage: lscr.io/linuxserver/adguardhome-sync:latest\ncontainer_name: adguardhome-sync\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- CONFIGFILE=/config/adguardhome-sync.yaml #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-adguardhome-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=adguardhome-sync \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e CONFIGFILE=/config/adguardhome-sync.yaml `#optional` \\\n-p 8080:8080 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/adguardhome-sync:latest\n
    "},{"location":"images/docker-adguardhome-sync/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-adguardhome-sync/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for AdGuardHome Sync's web API."},{"location":"images/docker-adguardhome-sync/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York CONFIGFILE=/config/adguardhome-sync.yaml Set a custom config file."},{"location":"images/docker-adguardhome-sync/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-adguardhome-sync/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-adguardhome-sync/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-adguardhome-sync/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-adguardhome-sync/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-adguardhome-sync/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-adguardhome-sync/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it adguardhome-sync /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f adguardhome-sync
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' adguardhome-sync
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/adguardhome-sync:latest
    "},{"location":"images/docker-adguardhome-sync/#versions","title":"Versions","text":"
    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 18.12.21: - Rebase to Alpine 3.15.
    • 09.08.21: - Rebase to Alpine 3.14.
    • 08.04.21: - Initial Release.
    "},{"location":"images/docker-airsonic-advanced/","title":"airsonic-advanced","text":""},{"location":"images/docker-airsonic-advanced/#linuxserverairsonic-advanced","title":"linuxserver/airsonic-advanced","text":"

    Airsonic-advanced is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    "},{"location":"images/docker-airsonic-advanced/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-airsonic-advanced/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Latest releases of Airsonic-Advanced"},{"location":"images/docker-airsonic-advanced/#application-setup","title":"Application Setup","text":"

    We don't formally support upgrading from Airsonic to Airsonic Advanced, it may or may not work for you and we'd recommend making backups before attempting this. Following the upgrade you may experience a forced rescan of your library so take this into account if you have a lot of files.

    Please see notes about upgrading from v10 to v11 here

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    "},{"location":"images/docker-airsonic-advanced/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-airsonic-advanced/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nairsonic-advanced:\nimage: lscr.io/linuxserver/airsonic-advanced:latest\ncontainer_name: airsonic-advanced\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONTEXT_PATH=<URL_BASE> #optional\n- JAVA_OPTS=<options> #optional\nvolumes:\n- </path/to/config>:/config\n- </path/to/music>:/music\n- </path/to/playlists>:/playlists\n- </path/to/podcasts>:/podcasts\n- </path/to/other media>:/media #optional\nports:\n- 4040:4040\ndevices:\n- /dev/snd:/dev/snd #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-airsonic-advanced/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=airsonic-advanced \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CONTEXT_PATH=<URL_BASE> `#optional` \\\n-e JAVA_OPTS=<options> `#optional` \\\n-p 4040:4040 \\\n-v </path/to/config>:/config \\\n-v </path/to/music>:/music \\\n-v </path/to/playlists>:/playlists \\\n-v </path/to/podcasts>:/podcasts \\\n-v </path/to/other media>:/media `#optional` \\\n--device /dev/snd:/dev/snd `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/airsonic-advanced:latest\n
    "},{"location":"images/docker-airsonic-advanced/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-airsonic-advanced/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"images/docker-airsonic-advanced/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups. JAVA_OPTS=<options> For passing additional java options."},{"location":"images/docker-airsonic-advanced/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"images/docker-airsonic-advanced/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player."},{"location":"images/docker-airsonic-advanced/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-airsonic-advanced/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-airsonic-advanced/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-airsonic-advanced/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-airsonic-advanced/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-airsonic-advanced/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it airsonic-advanced /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic-advanced
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic-advanced
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic-advanced:latest
    "},{"location":"images/docker-airsonic-advanced/#versions","title":"Versions","text":"
    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 25.07.22: - Add vorbis-tools.
    • 02.01.22: - Initial Release.
    "},{"location":"images/docker-airsonic/","title":"airsonic","text":""},{"location":"images/docker-airsonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our airsonic-advanced image instead: https://github.com/linuxserver/docker-airsonic-advanced

    "},{"location":"images/docker-airsonic/#linuxserverairsonic","title":"linuxserver/airsonic","text":"

    Airsonic is a free, web-based media streamer, providing ubiquitious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    "},{"location":"images/docker-airsonic/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-airsonic/#application-setup","title":"Application Setup","text":"

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

    Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

    "},{"location":"images/docker-airsonic/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-airsonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nairsonic:\nimage: lscr.io/linuxserver/airsonic\ncontainer_name: airsonic\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONTEXT_PATH=<URL_BASE> #optional\n- JAVA_OPTS=<options> #optional\nvolumes:\n- </path/to/config>:/config\n- </path/to/music>:/music\n- </path/to/playlists>:/playlists\n- </path/to/podcasts>:/podcasts\n- </path/to/other media>:/media #optional\nports:\n- 4040:4040\ndevices:\n- /dev/snd:/dev/snd #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-airsonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=airsonic \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CONTEXT_PATH=<URL_BASE> `#optional` \\\n-e JAVA_OPTS=<options> `#optional` \\\n-p 4040:4040 \\\n-v </path/to/config>:/config \\\n-v </path/to/music>:/music \\\n-v </path/to/playlists>:/playlists \\\n-v </path/to/podcasts>:/podcasts \\\n-v </path/to/other media>:/media `#optional` \\\n--device /dev/snd:/dev/snd `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/airsonic\n
    "},{"location":"images/docker-airsonic/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-airsonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"images/docker-airsonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups. JAVA_OPTS=<options> For passing additional java options."},{"location":"images/docker-airsonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"images/docker-airsonic/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/snd Only needed to pass your host sound device to Airsonic's Java jukebox player."},{"location":"images/docker-airsonic/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-airsonic/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-airsonic/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-airsonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-airsonic/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-airsonic/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it airsonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f airsonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic
    "},{"location":"images/docker-airsonic/#versions","title":"Versions","text":"
    • 13.01.22: - Deprecate in favor of airsonic-advanced.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Use new inhouse java baseimage for quicker builds.
    • 23.08.18: - Rebase to ubuntu bionic for increased performance across all arch's.
    • 22.04.18: - Add the forgotten JAVA_OPTS to the run command.
    • 29.12.17: - Initial Release.
    "},{"location":"images/docker-apprise-api/","title":"apprise-api","text":""},{"location":"images/docker-apprise-api/#linuxserverapprise-api","title":"linuxserver/apprise-api","text":"

    Apprise-api Takes advantage of Apprise through your network with a user-friendly API.

    • Send notifications to more then 65+ services.
    • An incredibly lightweight gateway to Apprise.
    • A production ready micro-service at your disposal.

    Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.

    "},{"location":"images/docker-apprise-api/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-apprise-api/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-apprise-api/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\napprise-api:\nimage: lscr.io/linuxserver/apprise-api:latest\ncontainer_name: apprise-api\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-apprise-api/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=apprise-api \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8000:8000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/apprise-api:latest\n
    "},{"location":"images/docker-apprise-api/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-apprise-api/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Port for apprise's interface and API."},{"location":"images/docker-apprise-api/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-apprise-api/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where config is stored."},{"location":"images/docker-apprise-api/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-apprise-api/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-apprise-api/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-apprise-api/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-apprise-api/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-apprise-api/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it apprise-api /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f apprise-api
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' apprise-api
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/apprise-api:latest
    "},{"location":"images/docker-apprise-api/#versions","title":"Versions","text":"
    • 17.10.22: - Rebase to alpine 3.16, migrate to S6V3
    • 28.02.21: - Rebase to alpine 3.15.
    • 03.11.21: - Increase uWSGI buffer size to 32kb.
    • 16.05.21: - Add linuxserver wheel index.
    • 26.02.21: - Initial Release.
    "},{"location":"images/docker-audacity/","title":"audacity","text":""},{"location":"images/docker-audacity/#linuxserveraudacity","title":"linuxserver/audacity","text":"

    Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.

    "},{"location":"images/docker-audacity/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-audacity/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-audacity/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-audacity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\naudacity:\nimage: lscr.io/linuxserver/audacity:latest\ncontainer_name: audacity\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-audacity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=audacity \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/audacity:latest\n
    "},{"location":"images/docker-audacity/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-audacity/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Audacity desktop gui."},{"location":"images/docker-audacity/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-audacity/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and images"},{"location":"images/docker-audacity/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-audacity/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-audacity/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-audacity/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-audacity/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-audacity/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it audacity /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f audacity
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' audacity
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/audacity:latest
    "},{"location":"images/docker-audacity/#versions","title":"Versions","text":"
    • 13.12.22: - Rebase to Jammy.
    • 14.09.21: - Use the official appimage, switch to single arch (x86_64). Armhf and aarch64 users can remain on version 3.0.2 but there won't be further updates.
    • 07.04.21: - Initial release.
    "},{"location":"images/docker-babybuddy/","title":"babybuddy","text":""},{"location":"images/docker-babybuddy/#linuxserverbabybuddy","title":"linuxserver/babybuddy","text":"

    Babybuddy is a buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (as much) guess work.

    "},{"location":"images/docker-babybuddy/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-babybuddy/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin.

    By default BabyBuddy uses sqlite3. To use an external database like postgresql or mysql/mariadb instead, you can use the environment variables listed in BabyBuddy docs.

    "},{"location":"images/docker-babybuddy/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-babybuddy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbabybuddy:\nimage: lscr.io/linuxserver/babybuddy:latest\ncontainer_name: babybuddy\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com\nvolumes:\n- /path/to/appdata:/config\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-babybuddy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=babybuddy \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com \\\n-p 8000:8000 \\\n-v /path/to/appdata:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/babybuddy:latest\n
    "},{"location":"images/docker-babybuddy/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-babybuddy/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 the port for the web ui"},{"location":"images/docker-babybuddy/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com Add any address you'd like to access babybuddy at (comma separated, no spaces)"},{"location":"images/docker-babybuddy/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration and data."},{"location":"images/docker-babybuddy/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-babybuddy/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-babybuddy/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-babybuddy/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-babybuddy/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-babybuddy/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it babybuddy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f babybuddy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' babybuddy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/babybuddy:latest
    "},{"location":"images/docker-babybuddy/#versions","title":"Versions","text":"
    • 23.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Restructure nginx configs (see changes announcement).
    • 28.05.22: - Add missing PUID/PGID vars to readme.
    • 03.04.22: - Rebase to alpine-nginx baseimage. Add CSRF_TRUSTED_ORIGINS env var.
    • 11.12.21: - Add py3-mysqlclient for mysql/mariadb.
    • 14.11.21: - Add lxml dependencies (temp fix for amd64 by force compiling lxml).
    • 25.07.21: - Add libpq for postgresql.
    • 08.07.21: - Fix pip install issue.
    • 05.07.21: - Update Gunicorn parameters to prevent WORKER_TIMEOUT issue.
    • 22.06.21: - Initial release.
    "},{"location":"images/docker-base-alpine-example/","title":"Docker base alpine example","text":""},{"location":"images/docker-base-alpine-example/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-base-ubuntu-example/","title":"Docker base ubuntu example","text":""},{"location":"images/docker-base-ubuntu-example/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum Linuserver.io forum

    A custom base image built with Ubuntu cloud image and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-alpine-nginx/","title":"baseimage-alpine-nginx","text":""},{"location":"images/docker-baseimage-alpine-nginx/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Alpine linux, nginx and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }

    "},{"location":"images/docker-baseimage-alpine-python/","title":"baseimage-alpine-python","text":""},{"location":"images/docker-baseimage-alpine-python/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our standard alpine baseimage instead: https://github.com/linuxserver/docker-baseimage-alpine

    "},{"location":"images/docker-baseimage-alpine-python/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Alpine linux, python2 and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }

    "},{"location":"images/docker-baseimage-alpine/","title":"baseimage-alpine","text":""},{"location":"images/docker-baseimage-alpine/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC libera at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-arch/","title":"baseimage-arch","text":""},{"location":"images/docker-baseimage-arch/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-cloud9/","title":"baseimage-cloud9","text":""},{"location":"images/docker-baseimage-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-baseimage-cloud9/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Ubuntu linux and Cloud9..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-fedora/","title":"baseimage-fedora","text":""},{"location":"images/docker-baseimage-fedora/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Alpine linux and S6 overlay..

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-guacgui/","title":"baseimage-guacgui","text":""},{"location":"images/docker-baseimage-guacgui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-baseimage-guacgui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum"},{"location":"images/docker-baseimage-guacgui/#linuxserverdocker-baseimage-guacgui","title":"linuxserver/docker-baseimage-guacgui","text":"

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole

    "},{"location":"images/docker-baseimage-guacgui/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-baseimage-guacgui/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container.

    "},{"location":"images/docker-baseimage-guacgui/#docker","title":"docker","text":"
    docker create \\\n  --name=docker-baseimage-guacgui \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e APPNAME=xclock \\\n  -e GUAC_USER=abc `#optional` \\\n  -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 `#optional` \\\n  -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz `#optional` \\\n  -p 8080:8080 \\\n  -p 3389:3389 \\\n  -v </path/to/appdata>:/config \\\n  --restart unless-stopped \\\n  linuxserver/docker-baseimage-guacgui\n
    "},{"location":"images/docker-baseimage-guacgui/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2\"\nservices:\n  docker-baseimage-guacgui:\n    image: linuxserver/docker-baseimage-guacgui\n    container_name: docker-baseimage-guacgui\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=Europe/London\n      - APPNAME=xclock\n      - GUAC_USER=abc #optional\n      - GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 #optional\n      - GUAC_KEYBOARD_LAYOUT=de-de-qwertz #optional\n    volumes:\n      - </path/to/appdata>:/config\n    ports:\n      - 8080:8080\n      - 3389:3389\n    restart: unless-stopped\n
    "},{"location":"images/docker-baseimage-guacgui/#parameters","title":"Parameters","text":"

    Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Parameter Function -p 8080 Allows HTTP access to the internal X server. -p 3389 Allows RDP access to the internal X server. -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e APPNAME=xclock Specify the graphical application name shown on RDP access. -e GUAC_USER=abc Specify the username for guacamole's web interface. -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 Specify the password's md5 hash for guacamole's web interface. -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz Specify the used keyboard layout for the RDP session used by the gucamole client. Possible values are \"en-us-qwerty\" (default), de-de-qwertz (German keyboard (qwertz)), fr-fr-azerty (French keyboard (azerty)), fr-ch-qwertz (Swiss French keyboard (qwertz)), it-it-qwerty (Italian keyboard), ja-jp-qwerty (Japanese keyboard) and sv-se-qwerty (Swedish keyboard). -v /config Contains X user's home directory contents.

    "},{"location":"images/docker-baseimage-guacgui/#application-setup","title":"Application Setup","text":"

    This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage. \u00a0 If GUAC_USER and GUAC_PASS are not set, there is no authentication. Passwords can be generated via the following:

    echo -n password | openssl md5\n
    printf '%s' password | md5sum\n
    Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security.

    The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }

    "},{"location":"images/docker-baseimage-gui/","title":"baseimage-gui","text":""},{"location":"images/docker-baseimage-gui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-baseimage-gui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum"},{"location":"images/docker-baseimage-gui/#linuxserverdocker-baseimage-gui","title":"linuxserver/docker-baseimage-gui","text":"

    A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox

    "},{"location":"images/docker-baseimage-gui/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-baseimage-gui/#usage","title":"Usage","text":"

    Here is an example to help you get started creating a graphical container.

    "},{"location":"images/docker-baseimage-gui/#dockerfile","title":"Dockerfile","text":"
    #Firefox via RDP\nFROM lsiobase/ubuntu-gui:amd64-latest\n\n#########################################\n##        ENVIRONMENTAL CONFIG         ##\n#########################################\n# Set correct environment variables\nENV TERM=\"xterm\" APPNAME=\"firefox\"\nARG DEBIAN_FRONTEND=noninteractive\n\n#########################################\n##         INSTALL DEPENDENCIES        ##\n#########################################\nRUN apt-get update \\\n&& apt-get -y upgrade \\\n&& apt-get install -qy --no-install-recommends \\\n   firefox \\\n&& apt-get clean -y \\\n&& apt-get autoremove -y \\\n&& rm -rf /tmp/* /var/tmp/* \\\n&& rm -rf /var/lib/apt/lists/*\n\nCOPY root /\n
    "},{"location":"images/docker-baseimage-gui/#servicefile","title":"servicefile","text":"
    #!/bin/execlineb -P\n# ./root/etc/service.d/firefox/run\n\n# Redirect stderr to stdout.\nfdmove -c 2 1\n\n# Wait until openbox is running\nif { s6-svwait -t 10000 -U /var/run/s6/services/openbox/ }\n\n# Drop privileges and set env\ns6-setuidgid abc\ns6-env DISPLAY=:1 HOME=/config\n\n# Execute Firefox\n/usr/bin/firefox\n
    "},{"location":"images/docker-baseimage-gui/#access-the-graphical-interface","title":"Access the Graphical Interface","text":"

    Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client

    The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }

    "},{"location":"images/docker-baseimage-mono/","title":"baseimage-mono","text":""},{"location":"images/docker-baseimage-mono/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Ubuntu cloud image, mono and S6 overlay..

    Featuring :-

    • weekly updates
    • security updates

    The following line is only in this repo for loop testing: - { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }

    "},{"location":"images/docker-baseimage-rdesktop-web/","title":"baseimage-rdesktop-web","text":""},{"location":"images/docker-baseimage-rdesktop-web/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-baseimage-rdesktop/","title":"baseimage-rdesktop","text":""},{"location":"images/docker-baseimage-rdesktop/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

    A custom base image built with Ubuntu linux and xrdp

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-bazarr/","title":"bazarr","text":""},{"location":"images/docker-bazarr/#linuxserverbazarr","title":"linuxserver/bazarr","text":"

    Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you.

    "},{"location":"images/docker-bazarr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-bazarr/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases from Bazarr development \u2705 Pre-releases from Bazarr"},{"location":"images/docker-bazarr/#application-setup","title":"Application Setup","text":"
    • Once running the URL will be http://<host-ip>:6767.
    • You must complete all the setup parameters in the webui before you can save the config.
    "},{"location":"images/docker-bazarr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-bazarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbazarr:\nimage: lscr.io/linuxserver/bazarr:latest\ncontainer_name: bazarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/bazarr/config:/config\n- /path/to/movies:/movies #optional\n- /path/to/tv:/tv #optional\nports:\n- 6767:6767\nrestart: unless-stopped\n
    "},{"location":"images/docker-bazarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=bazarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 6767:6767 \\\n-v /path/to/bazarr/config:/config \\\n-v /path/to/movies:/movies `#optional` \\\n-v /path/to/tv:/tv `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/bazarr:latest\n
    "},{"location":"images/docker-bazarr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-bazarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 6767 Allows HTTP access to the internal webserver."},{"location":"images/docker-bazarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-bazarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Bazarr data /movies Location of your movies /tv Location of your TV Shows"},{"location":"images/docker-bazarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-bazarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-bazarr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-bazarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-bazarr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-bazarr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it bazarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bazarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bazarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bazarr:latest
    "},{"location":"images/docker-bazarr/#versions","title":"Versions","text":"
    • 11.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
    • 15.15.21: - Temp fix for lxml, compile from scratch to avoid broken official wheel.
    • 25.10.21: - Rebase to alpine 3.14. Fix numpy wheel.
    • 22.10.21: - Added openblas package to prevent numpy error.
    • 16.05.21: - Use wheel index.
    • 19.04.21: - Install from release zip.
    • 07.04.21: - Move app to /app/bazarr/bin, add package_info.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.05.20: - Add donation links for Bazarr to Github sponsors button and container log.
    • 08.04.20: - Removed /movies and /tv volumes from Dockerfiles.
    • 28.12.19: - Upgrade to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add env variable for setting umask.
    • 12.06.19: - Swap to install deps using maintainers requirements.txt, add ffmpeg for ffprobe.
    • 17.04.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.09.18: - Initial release.
    "},{"location":"images/docker-beets/","title":"beets","text":""},{"location":"images/docker-beets/#linuxserverbeets","title":"linuxserver/beets","text":"

    Beets is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.

    "},{"location":"images/docker-beets/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-beets/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Beets Releases nightly \u2705 Built against head of Beets git, generally considered unstable but a likely choice for power users of the application."},{"location":"images/docker-beets/#application-setup","title":"Application Setup","text":"

    Edit the config file in /config

    To edit the config from within the container use beet config -e

    For a command prompt as user abc docker exec -it -u abc beets bash

    See Beets for more info.

    Contains beets-extrafiles plugin, configuration details

    "},{"location":"images/docker-beets/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-beets/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbeets:\nimage: lscr.io/linuxserver/beets:latest\ncontainer_name: beets\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/music/library>:/music\n- </path/to/ingest>:/downloads\nports:\n- 8337:8337\nrestart: unless-stopped\n
    "},{"location":"images/docker-beets/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=beets \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8337:8337 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/music/library>:/music \\\n-v </path/to/ingest>:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/beets:latest\n
    "},{"location":"images/docker-beets/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-beets/#ports-p","title":"Ports (-p)","text":"Parameter Function 8337 Application WebUI"},{"location":"images/docker-beets/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-beets/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /music Music library /downloads Non processed music"},{"location":"images/docker-beets/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-beets/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-beets/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-beets/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-beets/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-beets/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it beets /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f beets
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' beets
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/beets:latest
    "},{"location":"images/docker-beets/#versions","title":"Versions","text":"
    • 15.01.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.05.19: - Add flac and mp3val binaries required for badfiles plugin.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.03.19: - Swap copyartifacts for extrafiles, update endpoints with nightly tag.
    • 01.03.19: - Switch to python3.
    • 07.02.19: - Add fftw-dev build dependency for chromaprint.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 15.08.18: - Rebase to alpine 3.8, use alpine repo version of pylast.
    • 12.08.18: - Add requests pip package.
    • 04.03.18: - Upgrade mp3gain to 1.6.1.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 27.12.17: - Add beautifulsoup4 pip package.
    • 06.12.17: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 16.01.17: - Add packages required for replaygain.
    • 24.12.16: - Add beets-copyartifacts plugin.
    • 07.12.16: - Edit cmake options for chromaprint, should now build and install fpcalc, add gstreamer lib
    • 14.10.16: - Add version layer information.
    • 01.10.16: - Add nano and editor variable to allow editing of the config from the container command line.
    • 30.09.16: - Fix umask.
    • 24.09.16: - Rebase to alpine linux.
    • 10.09.16: - Add layer badges to README.
    • 05.01.16: - Change ffpmeg repository, other version crashes container
    • 06.11.15: - Initial Release
    • 29.11.15: - Take out term setting, causing issues with key entry for some users
    "},{"location":"images/docker-blender/","title":"blender","text":""},{"location":"images/docker-blender/#linuxserverblender","title":"linuxserver/blender","text":"

    Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, motion graphics, interactive 3D applications, virtual reality, and computer games. This image does not support GPU rendering out of the box only accelerated workspace experience

    "},{"location":"images/docker-blender/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-blender/#application-setup","title":"Application Setup","text":"

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    "},{"location":"images/docker-blender/#hardware-acceleration","title":"Hardware Acceleration","text":"

    This only applies to your desktop experience, this container is capable of supporting accelerated rendering with /dev/dri mounted in, but the AMD HIP and Nvidia CUDA runtimes are massive which are not installed by default in this container.

    "},{"location":"images/docker-blender/#intelatiamd","title":"Intel/ATI/AMD","text":"

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri\n
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    "},{"location":"images/docker-blender/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    "},{"location":"images/docker-blender/#arm-devices","title":"Arm Devices","text":"

    Arm devices can run this image, but generally should not mount in /dev/dri. The OpenGL ES version is not high enough to run Blender. The program can run on these platforms though, leveraging CPU LLVMPipe rendering.

    Due to lack of arm32/64 binaries from the upstream project, our arm32/64 images install the latest version from the ubuntu repo, which is usually behind and thus the version the image is tagged with does not match the version contained.

    "},{"location":"images/docker-blender/#keyboard-layouts","title":"Keyboard Layouts","text":"

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    "},{"location":"images/docker-blender/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-blender/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nblender:\nimage: lscr.io/linuxserver/blender:latest\ncontainer_name: blender\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SUBFOLDER=/ #optional\n- KEYBOARD=en-us-qwerty #optional\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\ndevices:\n- /dev/dri:/dev/dri #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-blender/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=blender \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SUBFOLDER=/ `#optional` \\\n-e KEYBOARD=en-us-qwerty `#optional` \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--device /dev/dri:/dev/dri `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/blender:latest\n
    "},{"location":"images/docker-blender/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-blender/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Blender desktop gui"},{"location":"images/docker-blender/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options."},{"location":"images/docker-blender/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-blender/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only)"},{"location":"images/docker-blender/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration."},{"location":"images/docker-blender/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-blender/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-blender/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-blender/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-blender/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it blender /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f blender
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' blender
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/blender:latest
    "},{"location":"images/docker-blender/#versions","title":"Versions","text":"
    • 13.12.22: - Rebase to Jammy, migrate to s6v3.
    • 06.05.22: - Use the full semver version in image tags. Arm32/64 version tags are inaccurate due to installing from ubuntu repo, which is usually behind.
    • 12.03.22: - Initial Release.
    "},{"location":"images/docker-boinc/","title":"boinc","text":""},{"location":"images/docker-boinc/#linuxserverboinc","title":"linuxserver/boinc","text":"

    BOINC is a platform for high-throughput computing on a large scale (thousands or millions of computers). It can be used for volunteer computing (using consumer devices) or grid computing (using organizational resources). It supports virtualized, parallel, and GPU-based applications.

    "},{"location":"images/docker-boinc/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-boinc/#application-setup","title":"Application Setup","text":"

    This image sets up the BOINC client and manager and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View.

    Sometimes, the pop-up windows may open in a tiny box in the upper left corner of the screen. When that happens, you can find the corner and resize them.

    "},{"location":"images/docker-boinc/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-boinc/#intel","title":"Intel","text":"

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    "},{"location":"images/docker-boinc/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.

    "},{"location":"images/docker-boinc/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-boinc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nboinc:\nimage: lscr.io/linuxserver/boinc:latest\ncontainer_name: boinc\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PASSWORD= #optional\nvolumes:\n- /path/to/data:/config\nports:\n- 8080:8080\ndevices:\n- /dev/dri:/dev/dri #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-boinc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=boinc \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PASSWORD= `#optional` \\\n-p 8080:8080 \\\n-v /path/to/data:/config \\\n--device /dev/dri:/dev/dri `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/boinc:latest\n
    "},{"location":"images/docker-boinc/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-boinc/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Boinc desktop gui."},{"location":"images/docker-boinc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui."},{"location":"images/docker-boinc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where BOINC should store its database and config."},{"location":"images/docker-boinc/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Only needed if you want to use your Intel GPU (vaapi)."},{"location":"images/docker-boinc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker."},{"location":"images/docker-boinc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-boinc/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-boinc/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-boinc/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-boinc/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it boinc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f boinc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' boinc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/boinc:latest
    "},{"location":"images/docker-boinc/#versions","title":"Versions","text":"
    • 14.11.22: - Fix opencl driver.
    • 18.09.22: - Rebase to jammy.
    • 24.02.22: - Rebase to focal.
    • 31.01.22: - Improve device permissions setting verbosity.
    • 23.03.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 01.04.20: - Install boinc from ppa.
    • 17.03.20: - Add armhf and aarch64 builds and switch to multi-arch image.
    • 16.03.20: - Clean up old pid files.
    • 15.03.20: - Initial release.
    "},{"location":"images/docker-booksonic-air/","title":"booksonic-air","text":""},{"location":"images/docker-booksonic-air/#linuxserverbooksonic-air","title":"linuxserver/booksonic-air","text":"

    Booksonic-air is a platform for accessing the audiobooks you own wherever you are. At the moment the platform consists of: * Booksonic Air - A server for streaming your audiobooks, successor to the original Booksonic server and based on Airsonic. * Booksonic App - An DSub based Android app for connection to Booksonic-Air servers.

    "},{"location":"images/docker-booksonic-air/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-booksonic-air/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable booksonic-air releases"},{"location":"images/docker-booksonic-air/#application-setup","title":"Application Setup","text":"

    Whilst this is a more up to date rebase of the original Booksonic server, upgrading in place is not supported and a fresh install has been recommended. Default user/pass is admin/admin

    "},{"location":"images/docker-booksonic-air/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-booksonic-air/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbooksonic-air:\nimage: lscr.io/linuxserver/booksonic-air:latest\ncontainer_name: booksonic-air\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONTEXT_PATH=url-base\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/audiobooks>:/audiobooks\n- </path/to/podcasts>:/podcasts\n- </path/to/othermedia>:/othermedia\nports:\n- 4040:4040\nrestart: unless-stopped\n
    "},{"location":"images/docker-booksonic-air/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=booksonic-air \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CONTEXT_PATH=url-base \\\n-p 4040:4040 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/audiobooks>:/audiobooks \\\n-v </path/to/podcasts>:/podcasts \\\n-v </path/to/othermedia>:/othermedia \\\n--restart unless-stopped \\\nlscr.io/linuxserver/booksonic-air:latest\n
    "},{"location":"images/docker-booksonic-air/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-booksonic-air/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 Application WebUI"},{"location":"images/docker-booksonic-air/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc."},{"location":"images/docker-booksonic-air/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media."},{"location":"images/docker-booksonic-air/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-booksonic-air/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-booksonic-air/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-booksonic-air/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-booksonic-air/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-booksonic-air/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it booksonic-air /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic-air
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic-air
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic-air:latest
    "},{"location":"images/docker-booksonic-air/#versions","title":"Versions","text":"
    • 18.04.22: - Rebase to Alpine 3.15.
    • 15.09.20: - Initial Release.
    "},{"location":"images/docker-booksonic/","title":"booksonic","text":""},{"location":"images/docker-booksonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. Please migrate to https://github.com/linuxserver/docker-booksonic-air

    "},{"location":"images/docker-booksonic/#linuxserverbooksonic","title":"linuxserver/booksonic","text":"

    Booksonic is a server and an app for streaming your audiobooks to any pc or android phone. Most of the functionality is also availiable on other platforms that have apps for subsonic.

    "},{"location":"images/docker-booksonic/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-booksonic/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description latest Stable Booksonic releases prerelease Booksonic Pre-releases"},{"location":"images/docker-booksonic/#application-setup","title":"Application Setup","text":"

    Default user/pass is admin/admin

    "},{"location":"images/docker-booksonic/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-booksonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbooksonic:\nimage: lscr.io/linuxserver/booksonic\ncontainer_name: booksonic\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONTEXT_PATH=url-base\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/audiobooks>:/audiobooks\n- </path/to/podcasts>:/podcasts\n- </path/to/othermedia>:/othermedia\nports:\n- 4040:4040\nrestart: unless-stopped\n
    "},{"location":"images/docker-booksonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=booksonic \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CONTEXT_PATH=url-base \\\n-p 4040:4040 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/audiobooks>:/audiobooks \\\n-v </path/to/podcasts>:/podcasts \\\n-v </path/to/othermedia>:/othermedia \\\n--restart unless-stopped \\\nlscr.io/linuxserver/booksonic\n
    "},{"location":"images/docker-booksonic/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-booksonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 Application WebUI"},{"location":"images/docker-booksonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc."},{"location":"images/docker-booksonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia Other media."},{"location":"images/docker-booksonic/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-booksonic/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-booksonic/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-booksonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-booksonic/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-booksonic/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it booksonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f booksonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic
    "},{"location":"images/docker-booksonic/#versions","title":"Versions","text":"
    • 06.05.21: - This image is now deprecated. Please migrate to https://github.com/linuxserver/docker-booksonic-air
    • 11.08.20: - Changed upstream github repo location
    • 22.12.19: - Revert to pulling in external war, upgrade jetty.
    • 30.04.19: - Switching to build war from source, use stable booksonic releases.
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 16.01.19: - Adding pipeline logic and multi arch.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 06.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 13.12.16: - Initial Release.
    "},{"location":"images/docker-bookstack/","title":"bookstack","text":""},{"location":"images/docker-bookstack/#linuxserverbookstack","title":"linuxserver/bookstack","text":"

    Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.

    Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.

    For more information on BookStack visit their website and check it out: https://www.bookstackapp.com

    "},{"location":"images/docker-bookstack/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-bookstack/#application-setup","title":"Application Setup","text":"

    The default username is admin@admin.com with the password of password, access the container at http://dockerhost:6875.

    This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/.

    If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the APP_URL environment variable is set to your external domain, or it will not work

    Documentation for BookStack can be found at https://www.bookstackapp.com/docs/

    "},{"location":"images/docker-bookstack/#advanced-users-full-control-over-the-env-file","title":"Advanced Users (full control over the .env file)","text":"

    If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.

    When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.

    "},{"location":"images/docker-bookstack/#pdf-rendering","title":"PDF Rendering","text":"

    wkhtmltopdf is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/.

    The path to wkhtmltopdf in this image to include in your .env file is /usr/bin/wkhtmltopdf.

    "},{"location":"images/docker-bookstack/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-bookstack/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2\"\nservices:\nbookstack:\nimage: lscr.io/linuxserver/bookstack\ncontainer_name: bookstack\nenvironment:\n- PUID=1000\n- PGID=1000\n- APP_URL=\n- DB_HOST=bookstack_db\n- DB_PORT=3306\n- DB_USER=bookstack\n- DB_PASS=<yourdbpass>\n- DB_DATABASE=bookstackapp\nvolumes:\n- /path/to/data:/config\nports:\n- 6875:80\nrestart: unless-stopped\ndepends_on:\n- bookstack_db\nbookstack_db:\nimage: lscr.io/linuxserver/mariadb\ncontainer_name: bookstack_db\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_ROOT_PASSWORD=<yourdbpass>\n- TZ=Europe/London\n- MYSQL_DATABASE=bookstackapp\n- MYSQL_USER=bookstack\n- MYSQL_PASSWORD=<yourdbpass>\nvolumes:\n- /path/to/data:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-bookstack/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=bookstack \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e APP_URL= \\\n-e DB_HOST=<yourdbhost> \\\n-e DB_PORT=<yourdbport> \\\n-e DB_USER=<yourdbuser> \\\n-e DB_PASS=<yourdbpass> \\\n-e DB_DATABASE=bookstackapp \\\n-p 6875:80 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/bookstack:latest\n
    "},{"location":"images/docker-bookstack/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-bookstack/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 6875 on the host"},{"location":"images/docker-bookstack/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London APP_URL= for specifying the IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com DB_HOST=<yourdbhost> for specifying the database host DB_PORT=<yourdbport> for specifying the database port if not default 3306 DB_USER=<yourdbuser> for specifying the database user DB_PASS=<yourdbpass> for specifying the database password (non-alphanumeric passwords must be properly escaped.) DB_DATABASE=bookstackapp for specifying the database to be used"},{"location":"images/docker-bookstack/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store any uploaded data on the docker host"},{"location":"images/docker-bookstack/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-bookstack/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-bookstack/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-bookstack/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-bookstack/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-bookstack/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it bookstack /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f bookstack
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bookstack
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bookstack:latest
    "},{"location":"images/docker-bookstack/#versions","title":"Versions","text":"
    • 05.01.23: - Fix db password setting (sed escape &).
    • 21.12.22: - Update db info in .env file when env vars are updated.
    • 10.10.22: - Remove password escape logic which caused problems for a small subset of users.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 14.03.22: - Add symlinks for theme support.
    • 11.07.21: - Rebase to Alpine 3.14.
    • 12.01.21: - Remove unused requirement, as of release 0.31.0.
    • 17.12.20: - Make APP_URL var required (upstream changes).
    • 17.09.20: - Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 26.07.19: - Use old version of tidyhtml pending upstream fixes.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 14.06.19: - Add wkhtmltopdf to image for PDF rendering.
    • 20.04.19: - Rebase to Alpine 3.9, add MySQL init logic.
    • 22.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.01.19: - Added php7-curl
    • 04.11.18: - Added php7-ldap
    • 15.10.18: - Changed functionality for advanced users
    • 08.10.18: - Advanced mode, symlink changes, sed fixing, docs updated, added some composer files
    • 23.09.28: - Updates pre-release
    • 02.07.18: - Initial Release.
    "},{"location":"images/docker-budge/","title":"budge","text":""},{"location":"images/docker-budge/#linuxserverbudge","title":"linuxserver/budge","text":"

    budge is an open source 'budgeting with envelopes' personal finance app.

    "},{"location":"images/docker-budge/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-budge/#application-setup","title":"Application Setup","text":"

    Access the web gui at http://SERVERIP:PORT

    "},{"location":"images/docker-budge/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-budge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nbudge:\nimage: lscr.io/linuxserver/budge:latest\ncontainer_name: budge\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\nvolumes:\n- /path/to/budge/config:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-budge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=budge \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-p 80:80 \\\n-p 443:443 \\\n-v /path/to/budge/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/budge:latest\n
    "},{"location":"images/docker-budge/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-budge/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-budge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York"},{"location":"images/docker-budge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files"},{"location":"images/docker-budge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-budge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-budge/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-budge/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-budge/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-budge/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it budge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f budge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' budge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/budge:latest
    "},{"location":"images/docker-budge/#versions","title":"Versions","text":"
    • 29.11.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 04.15.22: - Added NPM command to run db migrations.
    • 02.05.22: - Initial Release.
    "},{"location":"images/docker-calibre-web/","title":"calibre-web","text":""},{"location":"images/docker-calibre-web/#linuxservercalibre-web","title":"linuxserver/calibre-web","text":"

    Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.

    This software is a fork of library and licensed under the GPL v3 License.

    "},{"location":"images/docker-calibre-web/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-calibre-web/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Releases of Calibre-Web nightly \u2705 Commits to the master branch of Calibre-Web"},{"location":"images/docker-calibre-web/#application-setup","title":"Application Setup","text":"

    Webui can be found at http://your-ip:8083

    On the initial setup screen, enter /books as your calibre library location.

    Default admin login: Username: admin Password: admin123

    Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar

    64bit only We have implemented the optional ability to pull in the dependencies to enable ebook conversion utilising Calibre, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as shown in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Calibre E-Book Converter to /usr/bin/ebook-convert

    This image contains the kepubify ebook conversion tool (MIT License) to convert epub to kepub. In the Calibre-Web admin page (Basic Configuration:External Binaries) set the Path to Kepubify E-Book Converter to /usr/bin/kepubify

    "},{"location":"images/docker-calibre-web/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-calibre-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncalibre-web:\nimage: lscr.io/linuxserver/calibre-web:latest\ncontainer_name: calibre-web\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- DOCKER_MODS=linuxserver/mods:universal-calibre #optional\n- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional\nvolumes:\n- /path/to/data:/config\n- /path/to/calibre/library:/books\nports:\n- 8083:8083\nrestart: unless-stopped\n
    "},{"location":"images/docker-calibre-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=calibre-web \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e DOCKER_MODS=linuxserver/mods:universal-calibre `#optional` \\\n-e OAUTHLIB_RELAX_TOKEN_SCOPE=1 `#optional` \\\n-p 8083:8083 \\\n-v /path/to/data:/config \\\n-v /path/to/calibre/library:/books \\\n--restart unless-stopped \\\nlscr.io/linuxserver/calibre-web:latest\n
    "},{"location":"images/docker-calibre-web/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-calibre-web/#ports-p","title":"Ports (-p)","text":"Parameter Function 8083 WebUI"},{"location":"images/docker-calibre-web/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_MODS=linuxserver/mods:universal-calibre #optional & x86-64 only Adds the ability to perform ebook conversion OAUTHLIB_RELAX_TOKEN_SCOPE=1 Optionally set this to allow Google OAUTH to work"},{"location":"images/docker-calibre-web/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where calibre-web stores the internal database and config. /books Where your preexisting calibre database is located."},{"location":"images/docker-calibre-web/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-calibre-web/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-calibre-web/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-calibre-web/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-calibre-web/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-calibre-web/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it calibre-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre-web:latest
    "},{"location":"images/docker-calibre-web/#versions","title":"Versions","text":"
    • 27.12.22: - Add ghostscript, libxtst6, libxkbfile-dev.
    • 20.12.22: - Improve init script and prevent harmless error.
    • 19.10.22: - Rebase to jammy. Upgrade to s6v3. Clean up build dependencies.
    • 04.11.21: - Update pip arguments to ignore distro installed packages.
    • 24.06.21: - Add note on optional OAUTHLIB_RELAX_TOKEN_SCOPE for Google OAUTH support.
    • 17.05.21: - Add linuxserver wheel index.
    • 10.02.21: - Add libxrandr2
    • 25.01.21: - Add nightly tag
    • 19.01.21: - Add python3-pkg-resources
    • 13.01.21: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 12.10.20: - Add libxi6
    • 12.07.20: - Add kepubify for arm64v8
    • 05.06.20: - Add kepubify for x86-64 and arm32v7
    • 06.05.20: - Add libxslt1.1 and update ImageMagick policy
    • 19.01.20: - Adding LDAP libs.
    • 13.10.19: - Migrate to Python3.
    • 01.08.19: - Add libxcomposite1.
    • 13.06.19: - Add docker mod to enable optional ebook conversion on x86-64. Add unrar.
    • 02.06.19: - Rebase to Ubuntu Bionic & add Gdrive support.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.02.19: - Rebase to alpine 3.9, use repo version of imagemagick.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 03.01.19: - Remove guest user from default app.db.
    • 16.08.18: - Rebase to alpine 3.8.
    • 03.07.18: - New build pushed, all versions below 67 have vulnerability.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 06.12.17: - Rebase to alpine 3.7.
    • 27.11.17: - Use cpu core counting routine to speed up build time.
    • 24.07.17: - Curl version for imagemagick.
    • 17.07.17: - Initial release.
    "},{"location":"images/docker-calibre/","title":"calibre","text":""},{"location":"images/docker-calibre/#linuxservercalibre","title":"linuxserver/calibre","text":"

    Calibre is a powerful and easy to use e-book manager. Users say it\u2019s outstanding and a must-have. It\u2019ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It\u2019s also completely free and open source and great for both casual users and computer experts.

    "},{"location":"images/docker-calibre/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-calibre/#application-setup","title":"Application Setup","text":"

    This image sets up the calibre desktop app and makes its interface available via Guacamole server in the browser. The interface is available at http://your-ip:8080.

    By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

    Port 8081 is reserved for Calibre's built-in webserver, which can be enabled within the desktop app settings, and the internal port must be set to 8081 although it will then be available at the host mapped port for external access.

    You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.

    "},{"location":"images/docker-calibre/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-calibre/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncalibre:\nimage: lscr.io/linuxserver/calibre:latest\ncontainer_name: calibre\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PASSWORD= #optional\n- CLI_ARGS= #optional\nvolumes:\n- /path/to/data:/config\nports:\n- 8080:8080\n- 8081:8081\nrestart: unless-stopped\n
    "},{"location":"images/docker-calibre/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=calibre \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PASSWORD= `#optional` \\\n-e CLI_ARGS= `#optional` \\\n-p 8080:8080 \\\n-p 8081:8081 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/calibre:latest\n
    "},{"location":"images/docker-calibre/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-calibre/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Calibre desktop gui. 8081 Calibre webserver gui."},{"location":"images/docker-calibre/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PASSWORD= Optionally set a password for the gui. CLI_ARGS= Optionally pass cli start arguments to calibre."},{"location":"images/docker-calibre/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where calibre should store its database and library."},{"location":"images/docker-calibre/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker."},{"location":"images/docker-calibre/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-calibre/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-calibre/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-calibre/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-calibre/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it calibre /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f calibre
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre:latest
    "},{"location":"images/docker-calibre/#versions","title":"Versions","text":"
    • 19.10.22: - Set the window title to Calibre. Remove websocat as it is now handled properly in the baseimage.
    • 18.10.22: - Deprecate Arch branch.
    • 07.10.22: - Start calibre window maximized.
    • 16.09.22: - Rebase to jammy.
    • 24.07.22: - Add arm64 build for master branch.
    • 11.07.22: - Update dependencies for Calibre 6.
    • 28.05.22: - Rebase to focal.
    • 31.03.22: - Fix umask.
    • 28.02.22: - Add speech support to bionic image.
    • 05.01.22: - Add arch branch for arm platforms.
    • 20.04.21: - Fix the HOME folder.
    • 19.04.21: - Add libnss3 back in. Make sure Calibre can access environment variables.
    • 18.04.21: - Start calibre on container start rather than gui connect.
    • 15.04.21: - Rebase to rdesktop-web baseimage. Deprecate GUAC_USER and GUAC_PASS env vars. Existing users can set the new var PASSWORD for the user abc.
    • 25.09.20: - Switch to python3, add various new dependencies for calibre 5.0.
    • 10.05.19: - Add new env var CLI_ARGS to pass start arguments to calibre.
    • 18.03.19: - Let Calibre access environment variables, add optional umask setting.
    • 23.10.19: - Remove reccomended deps and zenity for character compatibility.
    • 18.10.19: - Add python-xdg.
    • 08.10.19: - Add fonts-wqy-microhei ttf-wqy-zenhei fcitx-rime dependency to resolve issue with Chinese encoding.
    • 04.10.19: - Add libxkbcommon-x11-0 dependency to resolve issue with Calibre 4.
    • 08.08.19: - Add zenity for international character support in dialog boxes.
    • 12.07.19: - Download binary from calibre website instead of github.
    • 29.04.19: - Initial release.
    "},{"location":"images/docker-cardigann/","title":"cardigann","text":""},{"location":"images/docker-cardigann/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend current users switch to linuxserver/jackett.

    "},{"location":"images/docker-cardigann/#linuxservercardigann","title":"linuxserver/cardigann","text":"

    Cardigann a server for adding extra indexers to Sonarr, SickRage and CouchPotato via Torznab and TorrentPotato proxies. Behind the scenes Cardigann logs in and runs searches and then transforms the results into a compatible format.

    "},{"location":"images/docker-cardigann/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-cardigann/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-cardigann/#docker","title":"docker","text":"
    docker create \\\n  --name=cardigann \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e SOCKS_PROXY=IP:PORT \\\n  -e HTTP_PROXY=IP:PORT \\\n  -p 5060:5060 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/cardigann\n
    "},{"location":"images/docker-cardigann/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2\"\nservices:\ncardigann:\nimage: linuxserver/cardigann\ncontainer_name: cardigann\nenvironment:\n- PUID=1000\n- PGID=1000\n- SOCKS_PROXY=IP:PORT\n- HTTP_PROXY=IP:PORT\nvolumes:\n- <path to data>:/config\nports:\n- 5060:5060\nrestart: unless-stopped\n
    "},{"location":"images/docker-cardigann/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-cardigann/#ports-p","title":"Ports (-p)","text":"Parameter Function 5060 The port for the Cardigann webinterface"},{"location":"images/docker-cardigann/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SOCKS_PROXY=IP:PORT for using a socks proxy (optional) HTTP_PROXY=IP:PORT for using a HTTP proxy (optional)"},{"location":"images/docker-cardigann/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Cardigann config"},{"location":"images/docker-cardigann/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-cardigann/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:5060, for more information check out Cardigann.

    By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080

    The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ).

    "},{"location":"images/docker-cardigann/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it cardigann /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cardigann
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cardigann
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/cardigann
    "},{"location":"images/docker-cardigann/#versions","title":"Versions","text":"
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.02.19: - Multi arch images and pipeline build logic
    • 14.01.19: - Add multi arch and pipeline logic
    • 22.08.18: - Rebase to alpine 3.8
    • 06.05.18: - Use buildstage in Dockerfile
    • 06.12.17: - Rebase to alpine 3.7
    • 12.08.17: - Add npm install to build stage
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 03.11.16: - Compiled using sstamoulis' method
    • 01.11.16: - Initial Release
    "},{"location":"images/docker-changedetection.io/","title":"changedetection.io","text":""},{"location":"images/docker-changedetection.io/#linuxserverchangedetectionio","title":"linuxserver/changedetection.io","text":"

    Changedetection.io provides free, open-source web page monitoring, notification and change detection.

    "},{"location":"images/docker-changedetection.io/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-changedetection.io/#application-setup","title":"Application Setup","text":"

    Webui is accessible at http://SERVERIP:PORT

    Please note that this image does not contain the Playwright content fetcher due to a lack of support for muslc-based systems. If you require this feature please use Selenium or the official container

    For more info read the wiki.

    "},{"location":"images/docker-changedetection.io/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-changedetection.io/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nchangedetection:\nimage: lscr.io/linuxserver/changedetection.io:latest\ncontainer_name: changedetection\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- BASE_URL= #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 5000:5000\nrestart: unless-stopped\n
    "},{"location":"images/docker-changedetection.io/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=changedetection.io \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e BASE_URL= `#optional` \\\n-p 5000:5000 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/changedetection.io:latest\n
    "},{"location":"images/docker-changedetection.io/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-changedetection.io/#ports-p","title":"Ports (-p)","text":"Parameter Function 5000 WebUI"},{"location":"images/docker-changedetection.io/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL= Specify the full URL (including protocol) when running behind a reverse proxy"},{"location":"images/docker-changedetection.io/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-changedetection.io/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-changedetection.io/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-changedetection.io/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-changedetection.io/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-changedetection.io/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-changedetection.io/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it changedetection.io /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f changedetection.io
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' changedetection.io
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/changedetection.io:latest
    "},{"location":"images/docker-changedetection.io/#versions","title":"Versions","text":"
    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 09.10.22: - Add make as build dep to fix pip jq build on armhf.
    • 07.08.22: - Initial release.
    "},{"location":"images/docker-chevereto/","title":"chevereto","text":""},{"location":"images/docker-chevereto/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend alternative images such as: https://github.com/linuxserver/docker-pixapop/ https://github.com/linuxserver/docker-piwigo/ https://github.com/linuxserver/docker-photoshow/

    "},{"location":"images/docker-chevereto/#linuxserverchevereto","title":"linuxserver/chevereto","text":"

    Chevereto is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. It's your hosting and your rules, so say goodbye to closures and restrictions.

    "},{"location":"images/docker-chevereto/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-chevereto/#application-setup","title":"Application Setup","text":"

    Chevereto-Free now has a maintainer!

    ~~Chevereto-Free will be EOL on 2021-12-31 and no new releases will be produced for it. Our container will continue to be updated until at least that date but we cannot make any assurances beyond it.~~

    Access the WebUI at :443. For more information, check out Chevereto Free.

    Chevereto requires a MariaDB database, we have an image available here if you require it.

    If you are putting Chevereto behind a reverse proxy and need the Real IP to be passed through, edit /config/nginx/site-confs/default, and set set_real_ip_from to match the IP address/address block of your proxy server(s).

    "},{"location":"images/docker-chevereto/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-chevereto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2\"\nservices:\nchevereto:\nimage: lscr.io/linuxserver/chevereto\ncontainer_name: chevereto\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/data:/data\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\ndepends_on:\n- chevereto-db\n\nchevereto-db:\nimage: lscr.io/linuxserver/mariadb\ncontainer_name: chevereto-db\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- MYSQL_ROOT_PASSWORD=<yourrootpass>\n- MYSQL_DATABASE=chevereto\n- MYSQL_USER=chevereto\n- MYSQL_PASSWORD=<yourdbpass>\nvolumes:\n- /path/to/config:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-chevereto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=chevereto \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=<TZ> \\\n-p 80:80 \\\n-p 443:443 \\\n-v <path to config on host>:/config \\\n-v <path to data on host>:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/chevereto:latest\n
    "},{"location":"images/docker-chevereto/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-chevereto/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-chevereto/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=<TZ> Timezone (i.e., America/New_York)"},{"location":"images/docker-chevereto/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config config directory volume mapping /data data directory volume mapping"},{"location":"images/docker-chevereto/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-chevereto/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-chevereto/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-chevereto/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-chevereto/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-chevereto/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it chevereto /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f chevereto
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chevereto
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chevereto:latest
    "},{"location":"images/docker-chevereto/#versions","title":"Versions","text":"
    • 13.06.22: - Deprecate.
    • 13.11.21: - Add composer to fix missing dependencies.
    • 21.10.21: - Removed deprecation warning, change reposiory links.
    • 22.07.21: - Rebase to Alpine 3.14.
    • 28.08.20: - Initial Release.
    "},{"location":"images/docker-ci/","title":"ci","text":""},{"location":"images/docker-ci/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast"},{"location":"images/docker-ci/#linuxserverci","title":"linuxserver/ci","text":"

    This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports

    The purpose of this container is to accept environment variables from our build system linuxserver/pipeline-triggers to perform basic continuous integration on the software being built.

    "},{"location":"images/docker-ci/#usage","title":"Usage","text":"

    The container can be run locally, but it is meant to be integrated into the LinuxServer build process:

    sudo docker run --rm -i \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\n-e IMAGE=\"linuxserver/<dockerimage>\" \\\n-e TAGS=\"<single tag or array seperated by |>\" \\\n-e META_TAG=<manifest main dockerhub tag> \\\n-e BASE=<alpine or debian based distro> \\\n-e SECRET_KEY=<S3 secret> \\\n-e ACCESS_KEY=<S3 key> \\\n-e DOCKER_ENV=\"<optional, Array of env vars seperated by | IE test=test|test2=test2 or single var. Defaults to ''>\" \\\n-e WEB_AUTH=\"<optional, format user:passord. Defaults to 'user:password'>\" \\\n-e WEB_PATH=\"<optional, format /yourpath>. Defaults to ''.\" \\\n-e S3_REGION=<optional, custom S3 Region. Defaults to 'us-east-1'> \\\n-e S3_BUCKET=<optional, custom S3 Bucket. Defaults to 'ci-tests.linuxserver.io'> \\\n-e WEB_SCREENSHOT_DELAY=<optional, time in seconds to delay before taking screenshot. Defaults to '30'>\n-e WEB_SCREENSHOT=<optional, set to false if not a web app. Defaults to 'false'> \\\n-e DELAY_START=<optional, time in seconds to delay before taking screenshot. Defaults to '5'> \\\n-e PORT=<optional, port web application listens on internal docker port. Defaults to '80'> \\\n-e SSL=<optional , use ssl for the screenshot true/false. Defaults to 'false'> \\\n-e CI_S6_VERBOSITY=<optional, Updates the S6_VERBOSITY env. Defaults to '2'>\n-t lsiodev/ci:latest \\\npython3 test_build.py\n

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-clarkson/","title":"clarkson","text":""},{"location":"images/docker-clarkson/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at Hammond as a replacement: https://github.com/akhilrex/hammond

    "},{"location":"images/docker-clarkson/#linuxserverclarkson","title":"linuxserver/clarkson","text":"

    Clarkson is a web-based dashboard application that gives you a neat and clean interface for logging your fuel fill-ups for all of your vehicles. The application has full multi-user support, as well as multiple vehicles per user. Whenever you fill-up your car or motorcycle, keep the receipt and record the data in Clarkson.

    "},{"location":"images/docker-clarkson/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-clarkson/#application-setup","title":"Application Setup","text":"

    Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container.

    It is preferred if you create the clarkson schema before initially running the container, then creating a user with granted permissions for the schema. Creating the schema before running the app is important as the \"clarkson\" user will not have permission to create the schema on your behalf. You can, of course, use the \"root\" user, which has the ability to create schemas automatically, but this is not recommended.

    CREATE SCHEMA `clarkson`;\nCREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `clarkson`.* TO 'clarkson_user';\n

    Once running, the container will run an initial MySQL migration, which populates the schema with all tables and procedures. The application will start immediately afterwards. You will need to register an initial user, of which will be the admin of the application. All subsequent users will be standard users. You can disable registrations after the fact by recreating the container with the ENABLE_REGISTRATIONS flag set to false. This will not hide the \"Register\" link, but will disable the functionality.

    "},{"location":"images/docker-clarkson/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-clarkson/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nclarkson:\nimage: lscr.io/linuxserver/clarkson\ncontainer_name: clarkson\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_HOST=<mysql_host>\n- MYSQL_USERNAME=<mysql_username>\n- MYSQL_PASSWORD=<mysql_password>\n- ENABLE_REGISTRATIONS=<true/false>\n- TZ=Europe/London\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-clarkson/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=clarkson \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e MYSQL_HOST=<mysql_host> \\\n-e MYSQL_USERNAME=<mysql_username> \\\n-e MYSQL_PASSWORD=<mysql_password> \\\n-e ENABLE_REGISTRATIONS=<true/false> \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/clarkson\n
    "},{"location":"images/docker-clarkson/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-clarkson/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 WebUI"},{"location":"images/docker-clarkson/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_HOST=<mysql_host> Points the backend to the MySQL database. This can be either a docker hostname or an IP. MYSQL_USERNAME=<mysql_username> The user with access to the clarkson schema. MYSQL_PASSWORD=<mysql_password> The password for the user. ENABLE_REGISTRATIONS=<true/false> Defaults to false. If set to true, allows new users to register. TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-clarkson/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-clarkson/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-clarkson/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-clarkson/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-clarkson/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-clarkson/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-clarkson/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it clarkson /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f clarkson
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' clarkson
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/clarkson
    "},{"location":"images/docker-clarkson/#versions","title":"Versions","text":"
    • 19.01.22: - Deprecate.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 23.03.19: - Updating runtime dependancies for the JRE.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine linux 3.8.
    • 19.02.18: - Initial Release.
    "},{"location":"images/docker-cloud9/","title":"cloud9","text":""},{"location":"images/docker-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend looking at our code-server and openvscode-server containers as potential replacements. https://github.com/linuxserver/docker-code-server https://github.com/linuxserver/docker-openvscode-server

    "},{"location":"images/docker-cloud9/#linuxservercloud9","title":"linuxserver/cloud9","text":"

    Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.

    "},{"location":"images/docker-cloud9/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-cloud9/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Docker and Compose environment pre-installed go \u2705 Basic Golang environment pre-installed nodejs \u2705 Current stable NodeJS/NPM environment pre-installed python \u2705 Current Python3 environment pre-installed ruby \u2705 Current Ruby environment pre-installed"},{"location":"images/docker-cloud9/#application-setup","title":"Application Setup","text":"

    Access the webui at http://your-ip:8000, for more information check out here.

    "},{"location":"images/docker-cloud9/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-cloud9/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncloud9:\nimage: lscr.io/linuxserver/cloud9:latest\ncontainer_name: cloud9\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- GITURL=https://github.com/linuxserver/docker-cloud9.git #optional\n- USERNAME= #optional\n- PASSWORD= #optional\nvolumes:\n- /path/to/your/code:/code #optional\n- /var/run/docker.sock:/var/run/docker.sock #optional\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-cloud9/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=cloud9 \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e GITURL=https://github.com/linuxserver/docker-cloud9.git `#optional` \\\n-e USERNAME= `#optional` \\\n-e PASSWORD= `#optional` \\\n-p 8000:8000 \\\n-v /path/to/your/code:/code `#optional` \\\n-v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/cloud9:latest\n
    "},{"location":"images/docker-cloud9/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-cloud9/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 The port for the Cloud9 web interface"},{"location":"images/docker-cloud9/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-cloud9.git Specify a git repo to checkout on first startup USERNAME= Optionally specify a username for http auth PASSWORD= Optionally specify a password for http auth (if USERNAME and PASSWORD are not set, there will be no http auth)"},{"location":"images/docker-cloud9/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /code Optionally if you want to mount up a local folder of code instead of checking out /var/run/docker.sock Needed if you plan to use Docker or compose commands"},{"location":"images/docker-cloud9/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-cloud9/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-cloud9/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-cloud9/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-cloud9/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-cloud9/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it cloud9 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cloud9
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cloud9
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cloud9:latest
    "},{"location":"images/docker-cloud9/#versions","title":"Versions","text":"
    • 23.06.22: - Deprecate image.
    • 24.06.21: - Use prebuilt compose binaries for the linuxserver repo.
    • 07.02.20: - Add optional http auth.
    • 02.06.19: - Initial Release.
    "},{"location":"images/docker-code-server/","title":"code-server","text":""},{"location":"images/docker-code-server/#linuxservercode-server","title":"linuxserver/code-server","text":"

    Code-server is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.

    "},{"location":"images/docker-code-server/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-code-server/#application-setup","title":"Application Setup","text":"

    Access the webui at http://<your-ip>:8443. For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n
    "},{"location":"images/docker-code-server/#hashed-code-server-password","title":"Hashed code-server password","text":"

    How to create the hashed password.

    "},{"location":"images/docker-code-server/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-code-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncode-server:\nimage: lscr.io/linuxserver/code-server:latest\ncontainer_name: code-server\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PASSWORD=password #optional\n- HASHED_PASSWORD= #optional\n- SUDO_PASSWORD=password #optional\n- SUDO_PASSWORD_HASH= #optional\n- PROXY_DOMAIN=code-server.my.domain #optional\n- DEFAULT_WORKSPACE=/config/workspace #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 8443:8443\nrestart: unless-stopped\n
    "},{"location":"images/docker-code-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=code-server \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PASSWORD=password `#optional` \\\n-e HASHED_PASSWORD= `#optional` \\\n-e SUDO_PASSWORD=password `#optional` \\\n-e SUDO_PASSWORD_HASH= `#optional` \\\n-e PROXY_DOMAIN=code-server.my.domain `#optional` \\\n-e DEFAULT_WORKSPACE=/config/workspace `#optional` \\\n-p 8443:8443 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/code-server:latest\n
    "},{"location":"images/docker-code-server/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-code-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 8443 web gui"},{"location":"images/docker-code-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=password Optional web gui password, if PASSWORD or HASHED_PASSWORD is not provided, there will be no auth. HASHED_PASSWORD= Optional web gui password, overrides PASSWORD, instructions on how to create it is below. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed. PROXY_DOMAIN=code-server.my.domain If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation DEFAULT_WORKSPACE=/config/workspace If this optional variable is set, code-server will open this directory by default"},{"location":"images/docker-code-server/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-code-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-code-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-code-server/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-code-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-code-server/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-code-server/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it code-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f code-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' code-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/code-server:latest
    "},{"location":"images/docker-code-server/#versions","title":"Versions","text":"
    • 05.10.22: - Install recommended deps to maintain parity with the older images.
    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 20.02.22: - Install using the official tarballs.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 06.12.21: - Add DEFAULT_WORKSPACE env var.
    • 29.11.21: - Rebase to Ubuntu focal.
    • 16.09.21: - Fix slow chown on large workspace (contents of workspace folder no longer chowned).
    • 11.07.21: - Bump node to 14 to fix builds
    • 08.05.21: - Fix doc link
    • 04.02.20: - Allow setting gui password via hash using env var HASHED_PASSWORD.
    • 23.12.20: - Allow setting sudo password via hash using env var SUDO_PASSWORD_HASH.
    • 29.05.20: - Add --domain-proxy support.
    • 21.05.20: - Shrink images, install via yarn, fix arm32v7 build.
    • 18.05.20: - Switch to multi-arch images, install via npm.
    • 29.04.20: - Update start arguments.
    • 01.04.20: - Structural changes required for v3.
    • 17.01.20: - Fix artifact url retrieval from github.
    • 24.10.19: - Upgrade to v2 builds.
    • 28.09.19: - Update project logo.
    • 21.09.19: - Add development builds/tag.
    • 09.07.19: - Add optional sudo access.
    • 01.07.19: - Add nano.
    • 24.06.19: - Initial Release.
    "},{"location":"images/docker-codiad/","title":"codiad","text":""},{"location":"images/docker-codiad/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9

    "},{"location":"images/docker-codiad/#linuxservercodiad","title":"linuxserver/codiad","text":"

    Codiad is a web-based IDE framework with a small footprint and minimal requirements. We have added a few plugins. More can be added in the marketplace in the WebUI.

    "},{"location":"images/docker-codiad/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-codiad/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-codiad/#docker","title":"docker","text":"
    docker create \\\n  --name=codiad \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 80:80 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/codiad\n
    "},{"location":"images/docker-codiad/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2\"\nservices:\ncodiad:\nimage: linuxserver/codiad\ncontainer_name: codiad\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-codiad/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-codiad/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-codiad/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-codiad/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Codiad stores data."},{"location":"images/docker-codiad/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-codiad/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it codiad /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codiad
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codiad
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/codiad
    "},{"location":"images/docker-codiad/#versions","title":"Versions","text":"
    • 10.06.19: - Deprecate Image.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9, adding ssh client.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 26.09.18: - Add sed to init file to configure projects folder correctly.
    • 04.09.18: - Rebase to alpine linux 3.8.
    • 09.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 06.11.15: - Initial Release.
    "},{"location":"images/docker-codimd/","title":"codimd","text":""},{"location":"images/docker-codimd/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-codimd/#linuxservercodimd","title":"linuxserver/codimd","text":"

    Codimd gives you access to all your files wherever you are.

    CodiMD is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    "},{"location":"images/docker-codimd/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-codimd/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-codimd/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    version: \"3\"\nservices:\nmariadb:\nimage: linuxserver/mariadb:latest\ncontainer_name: codimd_mariadb\nrestart: always\nvolumes:\n- <path to mariadb data>:/config\nenvironment:\n- MYSQL_ROOT_PASSWORD=<secret password>\n- MYSQL_DATABASE=codimd\n- MYSQL_USER=codimd\n- MYSQL_PASSWORD=<secret password>\n- PGID=1000\n- PUID=1000\n- TZ=Europe/London\ncodimd:\nimage: linuxserver/codimd:latest\ncontainer_name: codimd\nrestart: always\ndepends_on:\n- mariadb\nvolumes:\n- <path to config>:/config\nenvironment:\n- DB_HOST=mariadb\n- DB_USER=codimd\n- DB_PASS=<secret password>\n- DB_NAME=codimd\n- DB_PORT=3306\n- PGID=1000\n- PUID=1000\n- TZ=Europe/London\nports:\n- \"3000:3000\"\n
    "},{"location":"images/docker-codimd/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=codimd \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e DB_HOST=<hostname or ip> \\\n  -e DB_PORT=3306 \\\n  -e DB_USER=codimd \\\n  -e DB_PASS=<secret password> \\\n  -e DB_NAME=codimd \\\n  -e TZ=Europe/London \\\n  -p 3000:3000 \\\n  -v </path/to/appdata>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/codimd\n
    "},{"location":"images/docker-codimd/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-codimd/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 If you wish to access this container from http://{IP}:${PORT}` this must be left unchanged."},{"location":"images/docker-codimd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST=<hostname or ip> Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=codimd Database user DB_PASS=<secret password> Database password DB_NAME=codimd Database name TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-codimd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config CodiMD config and configurable files"},{"location":"images/docker-codimd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-codimd/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-codimd/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-codimd/#application-setup","title":"Application Setup","text":"

    THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc.

    CodiMD web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN and CMD_URL_ADDPORT)

    Full list of CodiMD options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our LetsEncrypt image and you can read how to use this in the Reverse Proxy Confs repository

    "},{"location":"images/docker-codimd/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-codimd/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it codimd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f codimd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codimd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/codimd
    "},{"location":"images/docker-codimd/#versions","title":"Versions","text":"
    • 22.12.20: - Deprecate image in favor of the new rebranded image at linuxserver/hedgedoc.
    • 23.05.19: - Initial release
    "},{"location":"images/docker-cops/","title":"cops","text":""},{"location":"images/docker-cops/#linuxservercops","title":"linuxserver/cops","text":"

    Cops by S\u00e9bastien Lucas, stands for Calibre OPDS (and HTML) Php Server.

    COPS links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices.

    Changes in your Calibre library are reflected immediately in your COPS pages.

    See : COPS's home for more details.

    Don't forget to check the Wiki.

    "},{"location":"images/docker-cops/#why-taken-from-the-authors-site","title":"Why? (taken from the author's site)","text":"

    In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.

    That's the main reason why I coded this OPDS server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).

    I initially thought of Calibre2OPDS but as it generate static file no search was possible.

    Later I added an simple HTML catalog that should be usable on my Kobo.

    So COPS's main advantages are : * No need for many dependencies. * No need for a lot of CPU or RAM. * Not much code. * Search is available. * With Dropbox / owncloud it's very easy to have an up to date OPDS server. * It was fun to code.

    If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.

    "},{"location":"images/docker-cops/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-cops/#application-setup","title":"Application Setup","text":"

    Access the webui at http://<docker host ip>:80. For connecting via OPDS on a mobile device use http://<docker host ip>:80/feed.php. It is strongly suggested that you reverse proxy this prior to exposing to the internet. For more information, such as requiring credentials, check the COPS Wiki (linked above).

    The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.

    "},{"location":"images/docker-cops/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-cops/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncops:\nimage: lscr.io/linuxserver/cops:latest\ncontainer_name: cops\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <path to data>:/books\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-cops/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=cops \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v <path to data>:/config \\\n-v <path to data>:/books \\\n--restart unless-stopped \\\nlscr.io/linuxserver/cops:latest\n
    "},{"location":"images/docker-cops/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-cops/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-cops/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-cops/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config COPS Application Data. /books Calibre metadata.db location."},{"location":"images/docker-cops/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-cops/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-cops/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-cops/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-cops/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-cops/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it cops /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f cops
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cops
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cops:latest
    "},{"location":"images/docker-cops/#versions","title":"Versions","text":"
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.11.20: - Pin composer version to 1.10.17.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multiarch and pipeline logic.
    • 21.08.18: - Rebase to alpine 3.8.
    • 02.07.18: - Add php7-ctype dependency.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.04.17: - Add composer packages, reduce layers.
    • 02.04.17: - Updated to version 1.1.0.
    • 05.02.17: - Updated to Alpine 3.5 & PHP7.
    • 24.10.16: - Updated to implement user based config.
    • 24.10.16: - Updated to version 1.0.1.
    • 14.10.16: - Add version layer information.
    • 28.09.16: - Add php5-zlib.
    • 11.09.16: - Add layer badges to README.
    • 29.08.16: - Add php5-opcache.
    • 28.08.16: - Add badges to README.
    • 12.08.16: - Initial Release.
    "},{"location":"images/docker-couchpotato/","title":"couchpotato","text":""},{"location":"images/docker-couchpotato/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained upstream and we will no longer be updating this image. For an alternative try: https://github.com/linuxserver/docker-radarr

    "},{"location":"images/docker-couchpotato/#linuxservercouchpotato","title":"linuxserver/couchpotato","text":"

    Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want list and it will search for NZBs/torrents of these movies every X hours. Once a movie is found, it will send it to SABnzbd or download the torrent to a specified directory.

    "},{"location":"images/docker-couchpotato/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-couchpotato/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:5050, for more information check out CouchPotato.

    "},{"location":"images/docker-couchpotato/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-couchpotato/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ncouchpotato:\nimage: lscr.io/linuxserver/couchpotato\ncontainer_name: couchpotato\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/downloads:/downloads\n- /path/to/movies:/movies\nports:\n- 5050:5050\nrestart: unless-stopped\n
    "},{"location":"images/docker-couchpotato/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=couchpotato \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 5050:5050 \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/downloads:/downloads \\\n-v /path/to/movies:/movies \\\n--restart unless-stopped \\\nlscr.io/linuxserver/couchpotato\n
    "},{"location":"images/docker-couchpotato/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-couchpotato/#ports-p","title":"Ports (-p)","text":"Parameter Function 5050 http gui"},{"location":"images/docker-couchpotato/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-couchpotato/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Couchpotato Application Data. /downloads Downloads Folder. /movies Movie Share."},{"location":"images/docker-couchpotato/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-couchpotato/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-couchpotato/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-couchpotato/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-couchpotato/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-couchpotato/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it couchpotato /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f couchpotato
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' couchpotato
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/couchpotato
    "},{"location":"images/docker-couchpotato/#versions","title":"Versions","text":"
    • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 10.06.19: - Add back unrar & unzip that were accidentally left out during rebase.
    • 06.06.19: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Multi-arch builds.
    • 16.08.18: - Rebase to alpine 3.8.
    • 06.11.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime, add UMASK_SET variable.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5.
    • 11.11.16: - Stop cp logging to docker log (they are accessible in the webui and the config folder).
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 12.11.15: - Misc Code Cleanup.
    • 02.10.15: - Change to python baseimage.
    • 28.07.15: - Updated to latest baseimage (for testing), and a fix to autoupdate.
    "},{"location":"images/docker-daapd/","title":"daapd","text":""},{"location":"images/docker-daapd/#linuxserverdaapd","title":"linuxserver/daapd","text":"

    Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.

    "},{"location":"images/docker-daapd/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-daapd/#application-setup","title":"Application Setup","text":"

    Map your music folder, open up itunes on the same LAN to see your music there.

    The web interface is available at http://<your ip>:3689

    For further setup options of remotes etc, check out the daapd website, Owntone.

    "},{"location":"images/docker-daapd/#enable-spotify-connect-server","title":"Enable spotify connect server","text":"

    Enable the spotify connect server by creating a pipe named 'spotify' in the root of your mounted music folder (not possible on most network mounts):

    mkfifo <music_folder>/spotify\n

    The spotify connect server should show up as the 'forked-daapd' device in your Spotify application.

    It is recommended to set the pipe_autostart option to true in your forked-daapd config.

    "},{"location":"images/docker-daapd/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-daapd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndaapd:\nimage: lscr.io/linuxserver/daapd:latest\ncontainer_name: daapd\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <path to music>:/music\nrestart: unless-stopped\n
    "},{"location":"images/docker-daapd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=daapd \\\n--net=host \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-v <path to data>:/config \\\n-v <path to music>:/music \\\n--restart unless-stopped \\\nlscr.io/linuxserver/daapd:latest\n
    "},{"location":"images/docker-daapd/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-daapd/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-daapd/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Shares host networking with container."},{"location":"images/docker-daapd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-daapd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where daapd server stores its config and dbase files. /music Map to your music folder."},{"location":"images/docker-daapd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-daapd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-daapd/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-daapd/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-daapd/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-daapd/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it daapd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f daapd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' daapd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/daapd:latest
    "},{"location":"images/docker-daapd/#versions","title":"Versions","text":"
    • 31.05.22: - Make sure the user has access to the audio device.
    • 31.05.22: - Add new deps, flex and bison.
    • 12.02.22: - Rebase to Alpine 3.15.
    • 14.09.21: - Enabled librespot. Disabled spotify on ARMv7
    • 10.07.21: - Change of paths to work with the new package name, OwnTone.
    • 02.04.21: - Update upstream repo, again.
    • 30.03.21: - Update upstream repo.
    • 06.10.20: - Enabled Spotify on Alpine 3.12 for X86_64 and ARMv7.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 16.01.20: - Rebase to alpine linux 3.11 and build antlr3c from source.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 20.08.18: - Rebase to alpine linux 3.8.
    • 09.06.18: - Use buildstage and update dependencies.
    • 05.03.18: - Use updated configure ac and disable avcodecsend to hopefully mitigate crashes with V26.
    • 25.02.18: - Query version before pull and build latest release.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 07.12.17: - Rebase to alpine linux 3.7.
    • 03.12.17: - Bump to 25.0, cpu core counting routine for faster builds, linting fixes.
    • 26.05.17: - Rebase to alpine linux 3.6.
    • 06.02.17: - Rebase to alpine linux 3.5.
    • 10.01.17: - Bump to 24.2.
    • 14.10.16: - Add version layer information.
    • 17.09.16: - Rebase to alpine linux, remove redundant spotify support, move to main repository.
    • 28.02.16: - Add chromecast support, bump dependency versions.
    • 04.01.16: - Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set.
    • 17.12.15: - Add in spotify support.
    • 25.11.15: - Initial Release.
    "},{"location":"images/docker-darktable/","title":"darktable","text":""},{"location":"images/docker-darktable/#linuxserverdarktable","title":"linuxserver/darktable","text":"

    darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.

    "},{"location":"images/docker-darktable/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-darktable/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-darktable/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-darktable/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndarktable:\nimage: lscr.io/linuxserver/darktable:latest\ncontainer_name: darktable\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-darktable/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=darktable \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/darktable:latest\n
    "},{"location":"images/docker-darktable/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-darktable/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Darktable desktop gui."},{"location":"images/docker-darktable/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-darktable/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and images"},{"location":"images/docker-darktable/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-darktable/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-darktable/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-darktable/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-darktable/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-darktable/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it darktable /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f darktable
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' darktable
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/darktable:latest
    "},{"location":"images/docker-darktable/#versions","title":"Versions","text":"
    • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 31.12.21: - Rebase to Alpine 3.15.
    • 01.10.21: - Rebase to Alpine 3.14.
    • 07.04.21: - Initial release.
    "},{"location":"images/docker-davos/","title":"davos","text":""},{"location":"images/docker-davos/#linuxserverdavos","title":"linuxserver/davos","text":"

    Davos is an FTP automation tool that periodically scans given host locations for new files. It can be configured for various purposes, including listening for specific files to appear in the host location, ready for it to download and then move, if required. It also supports completion notifications as well as downstream API calls, to further the workflow.

    "},{"location":"images/docker-davos/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-davos/#application-setup","title":"Application Setup","text":"

    The application does not require any set up other than starting the docker container. Further documentation can be found on the davos GitHub repository page.

    "},{"location":"images/docker-davos/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-davos/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndavos:\nimage: lscr.io/linuxserver/davos:latest\ncontainer_name: davos\nenvironment:\n- PUID=1000\n- PGID=1000\nvolumes:\n- <path to data>:/config\n- <path to downloads folder>:/download\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-davos/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=davos \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-p 8080:8080 \\\n-v <path to data>:/config \\\n-v <path to downloads folder>:/download \\\n--restart unless-stopped \\\nlscr.io/linuxserver/davos:latest\n
    "},{"location":"images/docker-davos/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-davos/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 This is the default port that davos runs under"},{"location":"images/docker-davos/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"images/docker-davos/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config davos's config location. This is where it stores its database file and logs. /download davos's file download location"},{"location":"images/docker-davos/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-davos/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-davos/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-davos/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-davos/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-davos/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it davos /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f davos
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' davos
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/davos:latest
    "},{"location":"images/docker-davos/#versions","title":"Versions","text":"
    • 15.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Updating runtime deps due to change in OpenJRE.
    • 08.03.19: - Updating build environment to pass proper build flags and use gradle wrapper.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.16: - Initial Release.
    "},{"location":"images/docker-ddclient/","title":"ddclient","text":""},{"location":"images/docker-ddclient/#linuxserverddclient","title":"linuxserver/ddclient","text":"

    Ddclient is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider. It was originally written by Paul Burry and is now mostly by wimpunk. It has the capability to update more than just dyndns and it can fetch your WAN-ipaddress in a few different ways.

    "},{"location":"images/docker-ddclient/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ddclient/#application-setup","title":"Application Setup","text":"

    Edit the ddclient.conf file found in your /config volume (also see official ddclient documentation). This config file has many providers to choose from and you basically just have to uncomment your provider and add username/password where requested. If you modify ddclient.conf, ddclient will automaticcaly restart and read the config.

    "},{"location":"images/docker-ddclient/#get-dynamic-ip-from-fritzbox","title":"Get dynamic IP from Fritz.Box","text":"

    If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf:

    use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox\n

    "},{"location":"images/docker-ddclient/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-ddclient/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nddclient:\nimage: lscr.io/linuxserver/ddclient:latest\ncontainer_name: ddclient\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-ddclient/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=ddclient \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ddclient:latest\n
    "},{"location":"images/docker-ddclient/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-ddclient/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-ddclient/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-ddclient/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where ddclient should store its config files."},{"location":"images/docker-ddclient/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ddclient/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-ddclient/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-ddclient/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-ddclient/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-ddclient/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it ddclient /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ddclient
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ddclient
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ddclient:latest
    "},{"location":"images/docker-ddclient/#versions","title":"Versions","text":"
    • 20.10.22: - Update build instructions for 3.10.0. Update default ddclient.conf.
    • 15.01.22: - Rebase to Alpine 3.15
    • 15.05.21: - Distribute script 'sample-get-ip-from-fritzbox' from ddclient repo
    • 08.03.21: - Added bind-tools to provide nsupdate
    • 01.06.20: - Rebasing to alpine 3.12.
    • 08.02.20: - Ingest from Github.
    • 06.02.19: - Fix permissions.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add perl-io-socket-inet6 for ipv6 support.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 22.08.18: - Rebase to alpine 3.8.
    • 10.08.18: - Update to ddclient v3.9.0. For Cloudflare users, please ensure you remove the line server=www.cloudflare.com from your ddclient.conf.
    • 07.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 10.02.17: - Rebase to alpine 3.5.
    • 26.11.16: - Update README to new standard and add icon and other small details.
    • 29.08.16: - Initial release.
    "},{"location":"images/docker-deluge/","title":"deluge","text":""},{"location":"images/docker-deluge/#linuxserverdeluge","title":"linuxserver/deluge","text":"

    Deluge is a lightweight, Free Software, cross-platform BitTorrent client.

    • Full Encryption
    • WebUI
    • Plugin System
    • Much more...
    "},{"location":"images/docker-deluge/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-deluge/#application-setup","title":"Application Setup","text":"

    The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge.

    To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password.

    Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used.

    "},{"location":"images/docker-deluge/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-deluge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndeluge:\nimage: lscr.io/linuxserver/deluge:latest\ncontainer_name: deluge\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- DELUGE_LOGLEVEL=error #optional\nvolumes:\n- /path/to/deluge/config:/config\n- /path/to/your/downloads:/downloads\nports:\n- 8112:8112\n- 6881:6881\n- 6881:6881/udp\nrestart: unless-stopped\n
    "},{"location":"images/docker-deluge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=deluge \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e DELUGE_LOGLEVEL=error `#optional` \\\n-p 8112:8112 \\\n-p 6881:6881 \\\n-p 6881:6881/udp \\\n-v /path/to/deluge/config:/config \\\n-v /path/to/your/downloads:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/deluge:latest\n
    "},{"location":"images/docker-deluge/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-deluge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8112 Port for webui 6881 Inbound torrent traffic (See App Setup) 6881/udp Inbound torrent traffic (See App Setup)"},{"location":"images/docker-deluge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use DELUGE_LOGLEVEL=error set the loglevel output when running Deluge, default is info for deluged and warning for delgued-web"},{"location":"images/docker-deluge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config deluge configs /downloads torrent download directory"},{"location":"images/docker-deluge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-deluge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-deluge/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-deluge/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-deluge/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-deluge/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it deluge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f deluge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' deluge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/deluge:latest
    "},{"location":"images/docker-deluge/#versions","title":"Versions","text":"
    • 29.11.22: - Restore geoip using py3-geoip as an interim measure.
    • 24.11.22: - Remove GeoIP packages as geoip will not build under Py 3.11 and Deluge still doesn't support geoip2.
    • 22.11.22: - Update GeoIP URL for new IPFS domain.
    • 29.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 22.02.22: - Rebase to Alpine, config on first startup, add GeoIP.
    • 15.01.22: - Rebase to Focal.
    • 07.06.21: - Remove host networking from readme examples
    • 23.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 09.05.19: - Add python3 requests and future modules.
    • 24.08.19: - Add ability to set LogLevel for Deluge.
    • 09.06.19: - Update to 2.x using deluge ppa.
    • 02.05.19: - Install full version of 7zip.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.11.18: - Add deluge-console.
    • 11.11.18: - Rebase to Ubuntu Bionic, add pipeline multiarch logic.
    • 09.04.18: - update to libressl2.7-libssl.
    • 29.03.18: - Rebase to alpine edge.
    • 07.12.17: - Rebase to alpine 3.7.
    • 20.11.17: - Change libressl2.6-libssl repo.
    • 01.07.17: - Add curl package.
    • 26.05.17: - Rebase to alpine 3.6.
    • 29.04.17: - Add variable for user defined umask.
    • 28.04.17: - update to libressl2.5-libssl.
    • 28.12.16: - Rebase to alpine 3.5 baseimage.
    • 17.11.16: - Rebase to edge baseimage.
    • 13.10.16: - Switch to libressl as openssl deprecated from alpine linux and deluge dependency no longer installs
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 30.08.16: - Use pip packages for some critical dependencies.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Rebase to alpine linux.
    • 09.11.15: - Add unrar and unzip
    • 15.10.15: - Initial Release.
    "},{"location":"images/docker-digikam/","title":"digikam","text":""},{"location":"images/docker-digikam/#linuxserverdigikam","title":"linuxserver/digikam","text":"

    digiKam: Professional Photo Management with the Power of Open Source

    "},{"location":"images/docker-digikam/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-digikam/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    "},{"location":"images/docker-digikam/#mysql-internal","title":"Mysql Internal","text":"

    When using mysql internal mode for the database you will need to click on \"Find\" Button for all the required binaries (mysql_install_db,mysqladmin,mysqld). Then select the binary file and press Open.

    "},{"location":"images/docker-digikam/#keyboard-layouts","title":"Keyboard Layouts","text":"

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    "},{"location":"images/docker-digikam/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-digikam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndigikam:\nimage: lscr.io/linuxserver/digikam:latest\ncontainer_name: digikam\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- SUBFOLDER=/ #optional\n- KEYBOARD=en-us-qwerty #optional\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-digikam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=digikam \\\n--net=host \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e SUBFOLDER=/ `#optional` \\\n-e KEYBOARD=en-us-qwerty `#optional` \\\n-p 3000:3000 `#optional` \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/digikam:latest\n
    "},{"location":"images/docker-digikam/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-digikam/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 digiKam desktop gui"},{"location":"images/docker-digikam/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Use Host Networking"},{"location":"images/docker-digikam/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options."},{"location":"images/docker-digikam/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores database."},{"location":"images/docker-digikam/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-digikam/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-digikam/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-digikam/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-digikam/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-digikam/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it digikam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f digikam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' digikam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/digikam:latest
    "},{"location":"images/docker-digikam/#versions","title":"Versions","text":"
    • 21.11.22: - Trigger upon baseimage updates (arch being a rolling distro has too many dependency breaks otherwise). Release version will be the baseimage build date going forward.
    • 20.10.22: - Migrate to s6v3.
    • 07.03.22: - Add Exiftool and firefox for image exports.
    • 20.02.22: - Add MariaDB, expand documentation.
    • 15.02.22: - Rebase to Arch.
    • 27.12.21: - Rebase to focal to resolve dependency issues.
    • 27.03.21: - Download link fixed.
    • 20.05.20: - Initial release.
    "},{"location":"images/docker-dillinger/","title":"dillinger","text":""},{"location":"images/docker-dillinger/#linuxserverdillinger","title":"linuxserver/dillinger","text":"

    Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.

    "},{"location":"images/docker-dillinger/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-dillinger/#application-setup","title":"Application Setup","text":"

    Access the webui at http://your-ip:8080 , keep in mind that storage for this application is in your browser session not server side. Only plugin configurations will ever be stored server side.

    "},{"location":"images/docker-dillinger/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndillinger:\nimage: lscr.io/linuxserver/dillinger:latest\ncontainer_name: dillinger\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to configs>:/config\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-dillinger/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=dillinger \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8080:8080 \\\n-v <path to configs>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/dillinger:latest\n
    "},{"location":"images/docker-dillinger/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-dillinger/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 The port for the Dillinger web interface"},{"location":"images/docker-dillinger/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-dillinger/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Dillinger plugin config files"},{"location":"images/docker-dillinger/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-dillinger/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-dillinger/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-dillinger/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-dillinger/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-dillinger/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it dillinger /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dillinger
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest
    "},{"location":"images/docker-dillinger/#versions","title":"Versions","text":"
    • 19.04.22: - Rebase to Alpine.
    • 31.05.19: - Initial Release.
    "},{"location":"images/docker-diskover/","title":"diskover","text":""},{"location":"images/docker-diskover/#linuxserverdiskover","title":"linuxserver/diskover","text":"

    diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.

    "},{"location":"images/docker-diskover/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-diskover/#application-setup","title":"Application Setup","text":"

    This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information.

    The default username is diskover with the password of darkdata, access the container at http://<host-ip>/. The UI may be unusable until a valid index has been created.

    The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = elasticsearch * const ES_PORT = 9200

    The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data. Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode:

    • docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the background
    • docker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data Will run an index in the foreground
    "},{"location":"images/docker-diskover/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-diskover/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    version: '2'\nservices:\ndiskover:\nimage: lscr.io/linuxserver/diskover\ncontainer_name: diskover\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- ES_HOST=elasticsearch\n- ES_PORT=9200\nvolumes:\n- /path/to/diskover/config:/config\n- /path/to/diskover/data:/data\nports:\n- 80:80\nmem_limit: 4096m\nrestart: unless-stopped\ndepends_on:\n- elasticsearch\nelasticsearch:\ncontainer_name: elasticsearch\nimage: docker.elastic.co/elasticsearch/elasticsearch:7.10.2\nenvironment:\n- discovery.type=single-node\n- xpack.security.enabled=true\n- bootstrap.memory_lock=true\n- \"ES_JAVA_OPTS=-Xms1g -Xmx1g\"\nulimits:\nmemlock:\nsoft: -1\nhard: -1\nvolumes:\n- /path/to/esdata:/usr/share/elasticsearch/data\nports:\n- 9200:9200\ndepends_on:\n- elasticsearch-helper\nrestart: unless-stopped\nelasticsearch-helper:\nimage: alpine\ncommand: sh -c \"sysctl -w vm.max_map_count=262144\"\nprivileged: true\n
    "},{"location":"images/docker-diskover/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=diskover \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e ES_HOST=elasticsearch \\\n-e ES_PORT=9200 \\\n-e ES_USER=elastic \\\n-e ES_PASS=changeme \\\n-p 80:80 \\\n-v /path/to/diskover/config:/config \\\n-v /path/to/diskover/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/diskover:latest\n
    "},{"location":"images/docker-diskover/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-diskover/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 diskover Web UI"},{"location":"images/docker-diskover/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York ES_HOST=elasticsearch ElasticSearch host (optional) ES_PORT=9200 ElasticSearch port (optional) ES_USER=elastic ElasticSearch username (optional) ES_PASS=changeme ElasticSearch password (optional)"},{"location":"images/docker-diskover/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /data Default mount point to crawl"},{"location":"images/docker-diskover/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-diskover/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-diskover/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-diskover/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-diskover/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-diskover/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it diskover /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f diskover
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' diskover
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/diskover:latest
    "},{"location":"images/docker-diskover/#versions","title":"Versions","text":"
    • 25.02.22: - Add php7-sqlite3 to support rc4 release.
    • 03.11.21: - Added more support for potential config files.
    • 31.10.21: - Added xpack.security variable to ElasticSearch; added instructions to edit Constants.php in diskover; corrected command needed to manually generate an index in diskover
    • 11.10.21: - Updated to diskover-community v2.
    • 19.11.20: - Fix pip packages.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.11.18: - Initial Release.
    "},{"location":"images/docker-doc-builder/","title":"linuxserver/doc-builder","text":"

    Expects to run as part of the LSIO CI process. Not for public consumption.

    **Running against remote: **

    docker run --rm \\\n -e CONTAINER_NAME=${CONTAINER_NAME} \\\n -v ${TEMPDIR}:/ansible/readme \\\n linuxserver/doc-builder:latest\n

    **Running locally: **

    If you need to test functionality just navigate to the folder with the readme-vars.yml and run:

    docker run --rm \\\n -v $(pwd):/tmp \\\n -e LOCAL=true \\\n linuxserver/doc-builder:latest\n

    The output will be in a GENERATED.md in your current working directory.

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-docker-compose/","title":"docker-compose","text":"

    The LinuxServer.io team brings you another container release featuring:

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at:

    • Blog - all the things you can do with our containers including How-To guides, opinions and much more!
    • Discord - realtime support / chat with the community and the team.
    • Discourse - post on our community forum.
    • Fleet - an online web interface which displays all of our maintained images.
    • GitHub - view the source for all of our repositories.
    • Open Collective - please consider helping us by either donating or contributing to our budget
    "},{"location":"images/docker-docker-compose/#linuxserverdocker-compose","title":"linuxserver/docker-compose","text":"

    docker-compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.

    "},{"location":"images/docker-docker-compose/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-docker-compose/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 docker-compose v1 releases alpine \u2705 docker-compose v1 releases with our alpine baseimage v2 \u2705 docker compose v2 releases"},{"location":"images/docker-docker-compose/#usage","title":"Usage","text":""},{"location":"images/docker-docker-compose/#docker-cli","title":"Docker cli","text":"

    docker run --rm \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v \"$PWD:$PWD\" \\\n  -w=\"$PWD\" \\\n  lscr.io/linuxserver/docker-compose:latest \\\n  up\n
    You can replace the last line with any docker-compose command and argument, which will be passed to docker-compose inside the image.

    "},{"location":"images/docker-docker-compose/#recommended-method","title":"Recommended method","text":"

    We provide a very convenient script that allows the docker-compose container to run as if it was installed natively:

    sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh -o /usr/local/bin/docker-compose\nsudo chmod +x /usr/local/bin/docker-compose\n

    Running these two commands on your docker host once will let you issue commands such as docker-compose up -d and the docker-compose container will do its job behind the scenes.

    "},{"location":"images/docker-docker-compose/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-docker-compose/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running: docker exec -it docker-compose /bin/bash
    • To monitor the logs of the container in realtime: docker logs -f docker-compose
    • container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' docker-compose
    • image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/docker-compose:latest
    "},{"location":"images/docker-docker-compose/#updating-info","title":"Updating Info","text":"

    Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

    Below are the instructions for updating containers:

    "},{"location":"images/docker-docker-compose/#via-docker-run","title":"Via Docker Run","text":"
    • Update the image: docker pull lscr.io/linuxserver/docker-compose:latest
    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-docker-compose/#building-locally","title":"Building locally","text":"

    If you want to make local modifications to these images for development purposes or just to customize the logic:

    git clone https://github.com/linuxserver/docker-docker-compose.git\ncd docker-docker-compose\ndocker build \\\n--no-cache \\\n--pull \\\n-t lscr.io/linuxserver/docker-compose:latest .\n

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    "},{"location":"images/docker-docker-compose/#versions","title":"Versions","text":"
    • 15.03.22: - Add v2 branch. Change master to only fetch v1 releases. Change alpine to only fetch v1 releases. Rebase master to focal. Rebase alpine to 3.15.
    • 17.12.20: - Update run.sh with formatting changes.
    • 04.10.20: - Update run.sh with changes from upstream.
    • 31.08.20: - Update tox and virtualenv.
    • 31.07.20: - Add support for global env var DOCKER_COMPOSE_IMAGE_TAG in the run.sh script.
    • 06.07.20: - Publish docker-compose and docker-cli binaries in Github releases.
    • 01.07.20: - Release alpine based images at alpine tag.
    • 04.06.20: - Bump docker-cli to 19.03.8, auto-detect python3 version.
    • 19.05.20: - Initial Release.
    "},{"location":"images/docker-dokuwiki/","title":"dokuwiki","text":""},{"location":"images/docker-dokuwiki/#linuxserverdokuwiki","title":"linuxserver/dokuwiki","text":"

    Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.

    "},{"location":"images/docker-dokuwiki/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-dokuwiki/#application-setup","title":"Application Setup","text":"

    Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set \"Use nice URLs\" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/, for more info see Dokuwiki

    "},{"location":"images/docker-dokuwiki/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-dokuwiki/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndokuwiki:\nimage: lscr.io/linuxserver/dokuwiki:latest\ncontainer_name: dokuwiki\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\n- 443:443 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-dokuwiki/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=dokuwiki \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-p 443:443 `#optional` \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/dokuwiki:latest\n
    "},{"location":"images/docker-dokuwiki/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-dokuwiki/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Application HTTP Port 443 #optional Application HTTPS Port"},{"location":"images/docker-dokuwiki/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-dokuwiki/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"images/docker-dokuwiki/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-dokuwiki/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-dokuwiki/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-dokuwiki/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-dokuwiki/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-dokuwiki/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it dokuwiki /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f dokuwiki
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dokuwiki
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dokuwiki:latest
    "},{"location":"images/docker-dokuwiki/#versions","title":"Versions","text":"
    • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
    • 11.13.22: - Move lib/images/smileys/local and lib/images/interwiki outside of the container for user defined smiley and interwiki icon support.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 20.07.21: - Add php7-dom, fixes minor issues in sprintdoc template.
    • 15.04.21: - Add vendor folder to deny list.
    • 21.02.21: - Store search index outside of container, set absolute (default) path for savedir.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 28.09.20: - Add php7-pdo_sqlite and php7-sqlite3.
    • 23.09.20: - Fix php-local.ini bug introduced in the prior PR.
    • 14.09.20: - Rebase to alpine 3.12. Add php7-ctype, php7-curl, php7-pdo_mysql, php7-pdo_pgsql, php7-pecl-imagick and php7-iconv. Bump upload max filesize and post max size to 100MB. Remove deprecated APP_URL env var. Fix breaking addons.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.12.19: - Add php7-ldap package to support LDAP authentication.
    • 28.05.19: - Initial Release.
    "},{"location":"images/docker-domoticz/","title":"domoticz","text":""},{"location":"images/docker-domoticz/#linuxserverdomoticz","title":"linuxserver/domoticz","text":"

    Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.

    "},{"location":"images/docker-domoticz/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-domoticz/#application-setup","title":"Application Setup","text":"

    To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com

    "},{"location":"images/docker-domoticz/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-domoticz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndomoticz:\nimage: lscr.io/linuxserver/domoticz:latest\ncontainer_name: domoticz\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- WEBROOT=domoticz #optional\n- DBASE=<path to database> #optional\nvolumes:\n- <path to data>:/config\nports:\n- 8080:8080\n- 6144:6144\n- 1443:1443\ndevices:\n- path to device:path to device\nrestart: unless-stopped\n
    "},{"location":"images/docker-domoticz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=domoticz \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e WEBROOT=domoticz `#optional` \\\n-e DBASE=<path to database> `#optional` \\\n-p 8080:8080 \\\n-p 6144:6144 \\\n-p 1443:1443 \\\n-v <path to data>:/config \\\n--device path to device:path to device \\\n--restart unless-stopped \\\nlscr.io/linuxserver/domoticz:latest\n
    "},{"location":"images/docker-domoticz/#passing-through-usb-devices","title":"Passing Through USB Devices","text":"

    To get full use of Domoticz, you probably have a USB device you want to pass through. To figure out which device to pass through, you have to connect the device and look in dmesg for the device node created. Issue the command 'dmesg | tail' after you connected your device and you should see something like below.

    usb 1-1.2: new full-speed USB device number 7 using ehci-pci\nftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected\nusb 1-1.2: Detected FT232RL\nusb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0\n
    As you can see above, the device node created is ttyUSB0. It does not say where, but it's almost always in /dev/. The correct tag for passing through this USB device is '--device /dev/ttyUSB0:/dev/ttyUSB0'

    "},{"location":"images/docker-domoticz/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-domoticz/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 6144 Domoticz communication port. 1443 Domoticz communication port."},{"location":"images/docker-domoticz/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. WEBROOT=domoticz Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying. DBASE=<path to database> Sets path to database. Do not set unless you know what this does."},{"location":"images/docker-domoticz/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Domoticz stores config files and data."},{"location":"images/docker-domoticz/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function path to device For passing through USB devices."},{"location":"images/docker-domoticz/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-domoticz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-domoticz/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-domoticz/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-domoticz/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-domoticz/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it domoticz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f domoticz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' domoticz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/domoticz:latest
    "},{"location":"images/docker-domoticz/#versions","title":"Versions","text":"
    • 15.10.22: - Remove deprecated legacy stable branches.
    • 05.02.22: - Set default webroot to /. Add env. variable for setting custom databas path.
    • 26.12.20: - Rebase to Ubuntu Focal, see here for troubleshooting armhf.
    • 24.11.19: - Change to using domoticz builtin Lua and MQTT.
    • 03.11.19: - Set capabilities for domoticz binary and move cmake from edge repo.
    • 28.06.19: - Rebasing to alpine 3.10. Add iputils for ping. Fix typo in readme. Fix permissions for custom icons.
    • 12.05.19: - Add boost dependencies and turn off static boost build. Bump to Alpine 3.9.
    • 30.03.19: - Add env variable to set webroot.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Fix branch for version logic.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 02.07.18: - Add openssh package.
    • 01.07.18: - Fix backup/restore in webgui.
    • 03.04.18: - Add dependencies for BroadlinkRM2 plugin.
    • 20.01.18: - Move telldus core to repo to prevent build fail when source site goes down.
    • 18.01.18: - Remove logging to syslog in the run command to prevent double logging.
    • 04.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 28.05.17: - Rebase to alpine 3.6.
    • 26.02.17: - Add curl and replace openssl with libressl.
    • 11.02.17: - Update README.
    • 03.01.17: - Initial Release.
    "},{"location":"images/docker-doplarr/","title":"doplarr","text":""},{"location":"images/docker-doplarr/#linuxserverdoplarr","title":"linuxserver/doplarr","text":"

    Doplarr is an *arr request bot for Discord.\"

    "},{"location":"images/docker-doplarr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-doplarr/#application-setup","title":"Application Setup","text":"

    Start by following the Discord setup instructions from Doplarr's readme.

    NOTE: The DISCORD__TOKEN environment variable is required to run the container!

    • If you are using Overseerr, fill in the Overseerr API and URL variables, and leave the Radarr/Sonarr variables blank.
    • If you are using Radarr/Sonarr (and not using Overseerr), fill in the Radarr/Sonarr API and URL variables, and leave the Overseerr variables blank.

    Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\".

    Review and adjust any Optional Settings from Doplarr's readme.

    "},{"location":"images/docker-doplarr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-doplarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndoplarr:\nimage: lscr.io/linuxserver/doplarr:latest\ncontainer_name: doplarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- DISCORD__TOKEN=\n- OVERSEERR__API=\n- OVERSEERR__URL=http://localhost:5055\n- RADARR__API=\n- RADARR__URL=http://localhost:7878\n- SONARR__API=\n- SONARR__URL=http://localhost:8989\n- DISCORD__MAX_RESULTS=25 #optional\n- DISCORD__REQUESTED_MSG_STYLE=:plain #optional\n- SONARR__QUALITY_PROFILE= #optional\n- RADARR__QUALITY_PROFILE= #optional\n- SONARR__ROOTFOLDER= #optional\n- RADARR__ROOTFOLDER= #optional\n- SONARR__LANGUAGE_PROFILE= #optional\n- OVERSEERR__DEFAULT_ID= #optional\n- PARTIAL_SEASONS=true #optional\n- LOG_LEVEL=:info #optional\n- JAVA_OPTS= #optional\nvolumes:\n- /path/to/appdata/config:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-doplarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=doplarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e DISCORD__TOKEN= \\\n-e OVERSEERR__API= \\\n-e OVERSEERR__URL=http://localhost:5055 \\\n-e RADARR__API= \\\n-e RADARR__URL=http://localhost:7878 \\\n-e SONARR__API= \\\n-e SONARR__URL=http://localhost:8989 \\\n-e DISCORD__MAX_RESULTS=25 `#optional` \\\n-e DISCORD__REQUESTED_MSG_STYLE=:plain `#optional` \\\n-e SONARR__QUALITY_PROFILE= `#optional` \\\n-e RADARR__QUALITY_PROFILE= `#optional` \\\n-e SONARR__ROOTFOLDER= `#optional` \\\n-e RADARR__ROOTFOLDER= `#optional` \\\n-e SONARR__LANGUAGE_PROFILE= `#optional` \\\n-e OVERSEERR__DEFAULT_ID= `#optional` \\\n-e PARTIAL_SEASONS=true `#optional` \\\n-e LOG_LEVEL=:info `#optional` \\\n-e JAVA_OPTS= `#optional` \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/doplarr:latest\n
    "},{"location":"images/docker-doplarr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-doplarr/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-doplarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York DISCORD__TOKEN= Specify your discord bot token. OVERSEERR__API= Specify your Overseerr API key. Leave blank if using Radarr/Sonarr. OVERSEERR__URL=http://localhost:5055 Specify your Overseerr URL. Leave blank if using Radarr/Sonarr. RADARR__API= Specify your Radarr API key. Leave blank if using Overseerr. RADARR__URL=http://localhost:7878 Specify your Radarr URL. Leave blank if using Overseerr. SONARR__API= Specify your Sonarr API key. Leave blank if using Overseerr. SONARR__URL=http://localhost:8989 Specify your Sonarr URL. Leave blank if using Overseerr. DISCORD__MAX_RESULTS=25 Sets the maximum size of the search results selection DISCORD__REQUESTED_MSG_STYLE=:plain Sets the style of the request alert message. One of :plain :embed :none SONARR__QUALITY_PROFILE= The name of the quality profile to use by default for Sonarr RADARR__QUALITY_PROFILE= The name of the quality profile to use by default for Radarr SONARR__ROOTFOLDER= The root folder to use by default for Sonarr RADARR__ROOTFOLDER= The root folder to use by default for Radarr SONARR__LANGUAGE_PROFILE= The name of the language profile to use by default for Sonarr OVERSEERR__DEFAULT_ID= The Overseerr user id to use by default if there is no associated discord account for the requester PARTIAL_SEASONS=true Sets whether users can request partial seasons. LOG_LEVEL=:info The log level for the logging backend. This can be changed for debugging purposes. One of trace :debug :info :warn :error :fatal :report JAVA_OPTS= For passing additional java options."},{"location":"images/docker-doplarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-doplarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-doplarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-doplarr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-doplarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-doplarr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-doplarr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it doplarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doplarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doplarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doplarr:latest
    "},{"location":"images/docker-doplarr/#versions","title":"Versions","text":"
    • 18.12.22: - Rebase to alpine 3.17, upgrade to openjdk17.
    • 01.05.22: - Remove DISCORD__ROLE_ID environment variable, see Permissions Configuration.
    • 30.01.22: - Variable adjustments.
    • 30.01.22: - Initial Release.
    "},{"location":"images/docker-doublecommander/","title":"doublecommander","text":""},{"location":"images/docker-doublecommander/#linuxserverdoublecommander","title":"linuxserver/doublecommander","text":"

    Double Commander is a free cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.

    "},{"location":"images/docker-doublecommander/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-doublecommander/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-doublecommander/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-doublecommander/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ndoublecommander:\nimage: lscr.io/linuxserver/doublecommander:latest\ncontainer_name: doublecommander\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/data:/data\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-doublecommander/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=doublecommander \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n-v /path/to/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/doublecommander:latest\n
    "},{"location":"images/docker-doublecommander/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-doublecommander/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Double Commander desktop gui."},{"location":"images/docker-doublecommander/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-doublecommander/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings. /data Host data directories, mount as many as needed."},{"location":"images/docker-doublecommander/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-doublecommander/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-doublecommander/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-doublecommander/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-doublecommander/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-doublecommander/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it doublecommander /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f doublecommander
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doublecommander
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doublecommander:latest
    "},{"location":"images/docker-doublecommander/#versions","title":"Versions","text":"
    • 16.09.22: - Migrate to s6v3.
    • 15.02.21: - Rebase to Ubuntu Jammy.
    • 14.12.21: - Rebase to Ubuntu focal.
    • 25.03.20: - Initial release.
    "},{"location":"images/docker-duckdns/","title":"duckdns","text":""},{"location":"images/docker-duckdns/#linuxserverduckdns","title":"linuxserver/duckdns","text":"

    Duckdns is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence.

    "},{"location":"images/docker-duckdns/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-duckdns/#application-setup","title":"Application Setup","text":"
    • Go to the duckdns website, register your subdomain(s) and retrieve your token
    • Create a container with your subdomain(s) and token
    • It will update your IP with the DuckDNS service every 5 minutes (with a random jitter)
    "},{"location":"images/docker-duckdns/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-duckdns/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nduckdns:\nimage: lscr.io/linuxserver/duckdns:latest\ncontainer_name: duckdns\nenvironment:\n- PUID=1000 #optional\n- PGID=1000 #optional\n- TZ=Europe/London\n- SUBDOMAINS=subdomain1,subdomain2\n- TOKEN=token\n- LOG_FILE=false #optional\nvolumes:\n- /path/to/appdata/config:/config #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-duckdns/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=duckdns \\\n-e PUID=1000 `#optional` \\\n-e PGID=1000 `#optional` \\\n-e TZ=Europe/London \\\n-e SUBDOMAINS=subdomain1,subdomain2 \\\n-e TOKEN=token \\\n-e LOG_FILE=false `#optional` \\\n-v /path/to/appdata/config:/config `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/duckdns:latest\n
    "},{"location":"images/docker-duckdns/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-duckdns/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-duckdns/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces TOKEN=token DuckDNS token LOG_FILE=false Set to true to log to file (also need to map /config)."},{"location":"images/docker-duckdns/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Used in conjunction with logging to file."},{"location":"images/docker-duckdns/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-duckdns/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-duckdns/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-duckdns/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-duckdns/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-duckdns/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it duckdns /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duckdns
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duckdns
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duckdns:latest
    "},{"location":"images/docker-duckdns/#versions","title":"Versions","text":"
    • 23.09.22: - Rebase to alpine 3.16 and s6v3.
    • 19.09.22: - Rebase to alpine 3.15.
    • 17.05.22: - Don't allow insecure connections and add timeout.
    • 17.05.22: - Add random jitter to update time.
    • 23.02.22: - Append to log file instead of overwriting every time.
    • 03.05.21: - Re-adjust cron timings to prevent peak times, update code formatting.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.04.20: - Add donation links for DuckDNS.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 24.09.19: - Fix perms on github and remove chmod that can stall the container.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 08.02.19: - Update readme with optional parameters.
    • 10.12.18: - Fix docker compose example.
    • 15.10.18: - Multi-arch image.
    • 22.08.18: - Rebase to alpine 3.8.
    • 08.12.17: - Rebase to alpine 3.7.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 17.11.16: - Initial release.
    "},{"location":"images/docker-duplicati/","title":"duplicati","text":""},{"location":"images/docker-duplicati/#linuxserverduplicati","title":"linuxserver/duplicati","text":"

    Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.

    "},{"location":"images/docker-duplicati/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-duplicati/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Beta releases of Duplicati development \u2705 Canary releases of Duplicati"},{"location":"images/docker-duplicati/#application-setup","title":"Application Setup","text":"

    The webui is at <your ip>:8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati.

    "},{"location":"images/docker-duplicati/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-duplicati/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nduplicati:\nimage: lscr.io/linuxserver/duplicati:latest\ncontainer_name: duplicati\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CLI_ARGS= #optional\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/backups>:/backups\n- </path/to/source>:/source\nports:\n- 8200:8200\nrestart: unless-stopped\n
    "},{"location":"images/docker-duplicati/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=duplicati \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CLI_ARGS= `#optional` \\\n-p 8200:8200 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/backups>:/backups \\\n-v </path/to/source>:/source \\\n--restart unless-stopped \\\nlscr.io/linuxserver/duplicati:latest\n
    "},{"location":"images/docker-duplicati/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-duplicati/#ports-p","title":"Ports (-p)","text":"Parameter Function 8200 http gui"},{"location":"images/docker-duplicati/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London CLI_ARGS= Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-duplicati/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /backups Path to store local backups. /source Path to source for files to backup."},{"location":"images/docker-duplicati/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-duplicati/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-duplicati/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-duplicati/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-duplicati/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-duplicati/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it duplicati /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f duplicati
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duplicati
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duplicati:latest
    "},{"location":"images/docker-duplicati/#versions","title":"Versions","text":"
    • 03.08.22: - Deprecate armhf.
    • 25.04.22: - Rebase to mono:focal.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 16.07.19: - Allow for additional command line arguments in an environment variable.
    • 28.06.19: - Rebase to bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 28.02.19: - Allow access from all hostnames, clarify info on image tags.
    • 13.01.19: - Use jq instead of awk in dockerfiles.
    • 11.01.19: - Multi-arch image.
    • 09.12.17: - Fix continuation lines.
    • 31.08.17: - Build only beta or release versions (thanks deasmi).
    • 24.04.17: - Initial release.
    "},{"location":"images/docker-emby/","title":"emby","text":""},{"location":"images/docker-emby/#linuxserveremby","title":"linuxserver/emby","text":"

    Emby organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone emby Media Server.

    "},{"location":"images/docker-emby/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-emby/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable emby releases beta \u2705 Beta emby releases"},{"location":"images/docker-emby/#application-setup","title":"Application Setup","text":"

    Webui can be found at http://<your-ip>:8096

    Emby has very complete and verbose documentation located here .

    Hardware acceleration users for Intel Quicksync and AMD VAAPI will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the emby docker.

    "},{"location":"images/docker-emby/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"

    Hardware acceleration users for Raspberry Pi OpenMAX will need to mount their /dev/vchiq video device inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n

    "},{"location":"images/docker-emby/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"

    Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

    --device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n

    "},{"location":"images/docker-emby/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-emby/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nemby:\nimage: lscr.io/linuxserver/emby:latest\ncontainer_name: emby\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/library:/config\n- /path/to/tvshows:/data/tvshows\n- /path/to/movies:/data/movies\n- /opt/vc/lib:/opt/vc/lib #optional\nports:\n- 8096:8096\n- 8920:8920 #optional\ndevices:\n- /dev/dri:/dev/dri #optional\n- /dev/vchiq:/dev/vchiq #optional\n- /dev/video10:/dev/video10 #optional\n- /dev/video11:/dev/video11 #optional\n- /dev/video12:/dev/video12 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-emby/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=emby \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8096:8096 \\\n-p 8920:8920 `#optional` \\\n-v /path/to/library:/config \\\n-v /path/to/tvshows:/data/tvshows \\\n-v /path/to/movies:/data/movies \\\n-v /opt/vc/lib:/opt/vc/lib `#optional` \\\n--device /dev/dri:/dev/dri `#optional` \\\n--device /dev/vchiq:/dev/vchiq `#optional` \\\n--device /dev/video10:/dev/video10 `#optional` \\\n--device /dev/video11:/dev/video11 `#optional` \\\n--device /dev/video12:/dev/video12 `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/emby:latest\n
    "},{"location":"images/docker-emby/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-emby/#ports-p","title":"Ports (-p)","text":"Parameter Function 8096 Http webUI. 8920 Https webUI (you need to setup your own certificate)."},{"location":"images/docker-emby/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-emby/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Emby data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /opt/vc/lib Path for Raspberry Pi OpenMAX libs optional."},{"location":"images/docker-emby/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi). /dev/vchiq Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio). /dev/video10 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video11 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video12 Only needed if you want to use your Raspberry Pi V4L2 video encoding."},{"location":"images/docker-emby/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-emby/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-emby/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-emby/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-emby/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-emby/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it emby /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emby
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emby
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emby:latest
    "},{"location":"images/docker-emby/#versions","title":"Versions","text":"
    • 26.09.22: - Update chown behavior.
    • 18.09.22: - Migrate to s6v3, rebase to Ubuntu Jammy.
    • 19.05.21: - Structural changes upstream.
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode.
    • 21.12.20: - Rebase to Focal, see here for troubleshooting armhf.
    • 03.11.20: - Fix issue with missing samba folder.
    • 13.11.20: - Fix issue with samba and ffmpeg.
    • 03.07.20: - Add support for amd vaapi hw transcode.
    • 29.02.20: - Add v4l2 support on Raspberry Pi.
    • 26.02.20: - Add openmax support on Raspberry Pi.
    • 15.02.20: - Allow restarting emby from the gui (also allows for auto restarts after addon updates).
    • 02.10.19: - Improve permission fixing for render and dvb devices.
    • 13.08.19: - Add umask environment variable.
    • 24.06.19: - Fix typos in readme.
    • 30.05.19: - Initial release.
    "},{"location":"images/docker-embystat/","title":"embystat","text":""},{"location":"images/docker-embystat/#linuxserverembystat","title":"linuxserver/embystat","text":"

    Embystat is a personal web server that can calculate all kinds of statistics from your (local) Emby server. Just install this on your server and let him calculate all kinds of fun stuff.

    "},{"location":"images/docker-embystat/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-embystat/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:6555. Follow the setup wizard on initial install. Then configure the required services.

    "},{"location":"images/docker-embystat/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-embystat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nembystat:\nimage: lscr.io/linuxserver/embystat:latest\ncontainer_name: embystat\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 6555:6555\nrestart: unless-stopped\n
    "},{"location":"images/docker-embystat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=embystat \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 6555:6555 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/embystat:latest\n
    "},{"location":"images/docker-embystat/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-embystat/#ports-p","title":"Ports (-p)","text":"Parameter Function 6555 web gui"},{"location":"images/docker-embystat/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-embystat/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-embystat/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-embystat/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-embystat/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-embystat/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-embystat/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-embystat/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it embystat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f embystat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' embystat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/embystat:latest
    "},{"location":"images/docker-embystat/#versions","title":"Versions","text":"
    • 11.06.22: - Rebase to focal, update disable updates flag.
    • 08.04.20: - Structural changes for beta18.
    • 04.12.19: - Disable in app updates.
    • 12.11.19: - Multi-arch builds.
    • 10.09.19: - Initial Release.
    "},{"location":"images/docker-emulatorjs/","title":"emulatorjs","text":""},{"location":"images/docker-emulatorjs/#linuxserveremulatorjs","title":"linuxserver/emulatorjs","text":"

    Emulatorjs - In browser web based emulation portable to nearly any device for many retro consoles. A mix of emulators is used between Libretro and EmulatorJS.

    "},{"location":"images/docker-emulatorjs/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-emulatorjs/#application-setup","title":"Application Setup","text":"

    The Backend can be accessed at:

    • http://yourhost:3000/

    The first thing you will need to do is click to download the default art/configs from this interface, this will setup a skeleton directory in your /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80.

    The frontend application has been initially optimized around being used with a standard gamepad (more specifically for modern Xbox consoles that have chromium based Edge browsers). The navigation revolves around the up/down/left/right keys to browse the menus and launch games. Mobile browsers will function, just keep in mind compatibility will be reduced especially for CD based games.

    It is important to note that some of the current emulators used for this frontend are obfuscated code, efforts are being made to reverse engineer it but you should know it can potentially reach out to third party services if you manually enable features like netplay (this should never happen in a stock setup). The point of this message is that on top of the de-obfuscation effort there is also effort to stop using binary blobs and shift to built from source libretro emscripten blobs, for now this web based emulation stack is the best for useability and compatibility. We are in the process to transitioning to libretro cores for emulators, currently 27/30 emulators have been replaced.

    For Xbox users please click the select button a couple times after launching a game to ensure the B button does not trigger a \"back\" action in the browser. (official name \"view button\" it is the two small squares) Exiting the controller mode and back to browser controls can be triggered by holding the start button for 3 seconds. (official name \"menu button\" the three lines) You will be unable to use features like save states and modify controller layouts on the emulatorjs based emulators currently as I have not determined a methodology of re-entering controller mode once you exit it. All normal game saves will function given you exit the game play screen cleanly using the B button for back this includes multi disc games for psx. Your game saves are stored in browser storage by hostname so if you make any changes to your local hosted setup (port or IP) the saves will not follow with it. For libretro based emulators you can use the button combination start+select+L+R to access the libretro menu and change settings/save or load/etc.

    We know about most of the oddities like crackling sound for some emulators, rendering issues, and games unreliably auto launching to fullscreen. In general full CD games on the Xbox web browser do not seem to work due to their size if you have a chd/pbp less than 450 megs it will run. Edge on Xbox has some kind of undocumented ram limitation of about a gigabyte. Until all emulators are transitioned to libretro cores the oddities of using self hosted EmulatorJS will not be something that can or should be solved using hacky workarounds interacting with obfuscated code. Just keep in mind these are full blown machine emulators running in Javascript in a browser, do not expect bare metal performance.

    Mounting in existing rom directories can be achieved by pointing to the default folder structure, IE lets say you would like to mount your NES library:

    -v /path/to/nes/roms:/data/nes/roms

    The folder names are: * 3do * arcade * atari2600 * atari7800 * colecovision * doom * gb * gba * gbc * jaguar * lynx * msx * n64 * nds * nes * ngp * odyssey2 * pce * psx * sega32x * segaCD * segaGG * segaMD * segaMS * segaSaturn * segaSG * snes * vb * vectrex * ws

    "},{"location":"images/docker-emulatorjs/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-emulatorjs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nemulatorjs:\nimage: lscr.io/linuxserver/emulatorjs:latest\ncontainer_name: emulatorjs\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SUBFOLDER=/ #optional\nvolumes:\n- /path/to/config:/config\n- /path/to/data:/data\nports:\n- 3000:3000\n- 80:80\n- 4001:4001 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-emulatorjs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=emulatorjs \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SUBFOLDER=/ `#optional` \\\n-p 3000:3000 \\\n-p 80:80 \\\n-p 4001:4001 `#optional` \\\n-v /path/to/config:/config \\\n-v /path/to/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/emulatorjs:latest\n
    "},{"location":"images/docker-emulatorjs/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-emulatorjs/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Rom/artwork management interface, used to generate/manage config files and download artwork 80 Emulation frontend containing static web files used to browse and launch games 4001 IPFS peering port, if you want to participate in the P2P network to distribute frontend artwork please forward this to the Internet"},{"location":"images/docker-emulatorjs/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder for reverse proxies IE '/FOLDER/'"},{"location":"images/docker-emulatorjs/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Path to store user profiles /data Path to store roms/artwork"},{"location":"images/docker-emulatorjs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-emulatorjs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-emulatorjs/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-emulatorjs/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-emulatorjs/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-emulatorjs/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it emulatorjs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f emulatorjs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emulatorjs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emulatorjs:latest
    "},{"location":"images/docker-emulatorjs/#versions","title":"Versions","text":"
    • 24.11.22: - Update IPFS links for chdman.
    • 04.04.22: - Ingest pre-built chdman bins during build time.
    • 23.02.22: - Update ingestion point for emulatorjs bins.
    • 25.01.22: - Allow users to mount in existing rom directories.
    • 14.01.22: - Add profile paths and rebase to Alpine 3.15.
    • 04.01.22: - Add headers needed for Threaded emulators.
    • 29.11.21: - Add wasm mime type to NGINX.
    • 26.11.21: - Configure IPFS in a lower power mode, use homebuilt blobs for emu cores.
    • 19.11.21: - Pin retroarch version.
    • 14.11.21: - Update default cores to ingest.
    • 23.10.21: - Initial release.
    "},{"location":"images/docker-endlessh/","title":"endlessh","text":""},{"location":"images/docker-endlessh/#linuxserverendlessh","title":"linuxserver/endlessh","text":"

    Endlessh is an SSH tarpit that very slowly sends an endless, random SSH banner. It keeps SSH clients locked up for hours or even days at a time. The purpose is to put your real SSH server on another port and then let the script kiddies get stuck in this tarpit instead of bothering a real server.

    "},{"location":"images/docker-endlessh/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-endlessh/#application-setup","title":"Application Setup","text":"

    The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config. The logs will be under /config/logs/endlessh.

    "},{"location":"images/docker-endlessh/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nendlessh:\nimage: lscr.io/linuxserver/endlessh:latest\ncontainer_name: endlessh\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- MSDELAY=10000 #optional\n- MAXLINES=32 #optional\n- MAXCLIENTS=4096 #optional\n- LOGFILE=false #optional\n- BINDFAMILY= #optional\nvolumes:\n- /path/to/appdata:/config #optional\nports:\n- 22:2222\nrestart: unless-stopped\n
    "},{"location":"images/docker-endlessh/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=endlessh \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e MSDELAY=10000 `#optional` \\\n-e MAXLINES=32 `#optional` \\\n-e MAXCLIENTS=4096 `#optional` \\\n-e LOGFILE=false `#optional` \\\n-e BINDFAMILY= `#optional` \\\n-p 22:2222 \\\n-v /path/to/appdata:/config `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/endlessh:latest\n
    "},{"location":"images/docker-endlessh/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-endlessh/#ports-p","title":"Ports (-p)","text":"Parameter Function 2222 ssh port"},{"location":"images/docker-endlessh/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. MAXLINES=32 The length of each line is randomized. This controls the maximum length of each line. Shorter lines may keep clients on for longer if they give up after a certain number of bytes. MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. LOGFILE=false By default, the app logs to container log. If this is set to true, the log will be output to file under /config/logs/endlessh (/config needs to be mapped). BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 to bind to IPv4 only or IPv6 only, respectively. Leave blank to bind to both."},{"location":"images/docker-endlessh/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Required if LOGFILE is set to true."},{"location":"images/docker-endlessh/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-endlessh/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-endlessh/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-endlessh/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-endlessh/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-endlessh/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it endlessh /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f endlessh
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest
    "},{"location":"images/docker-endlessh/#versions","title":"Versions","text":"
    • 23.09.22: - Migrate to s6v3.
    • 20.07.22: - Rebase to Alpine 3.16.
    • 16.04.22: - Rebase to Alpine 3.15.
    • 07.10.21: - Fix typo on MAXLINES var.
    • 08.06.21: - Add BINDFAMILY option.
    • 16.04.21: - Initial Release.
    "},{"location":"images/docker-fail2ban/","title":"fail2ban","text":""},{"location":"images/docker-fail2ban/#linuxserverfail2ban","title":"linuxserver/fail2ban","text":"

    Fail2ban is a daemon to ban hosts that cause multiple authentication errors.

    "},{"location":"images/docker-fail2ban/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-fail2ban/#application-setup","title":"Application Setup","text":"

    This container is designed to allow fail2ban to function at the host level, as well as at the docker container level. If you are running applications on the host, you will need to set the chain to INPUT in the jail for that application.

    "},{"location":"images/docker-fail2ban/#configuration-files","title":"Configuration Files","text":"

    On first run, the container will create a number of folders and files in /config. The default configurations for fail2ban are all disabled by default.

    Please refer to the Configuration README, which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md.

    "},{"location":"images/docker-fail2ban/#remote-logs","title":"Remote Logs","text":"

    All jails require the ability to read the application log files. We recommend mounting each application's log folder as a volume to the container (illustrated by the optional volumes in our documentation). Mounting individual log files can cause issues and is not recommended.

    The /remotelogs path is designed to act as a parent for all log files you would like fail2ban to be able to use. Each log file should be mounted in a subfolder underneath /remotelogs, ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container

    "},{"location":"images/docker-fail2ban/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-fail2ban/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfail2ban:\nimage: lscr.io/linuxserver/fail2ban:latest\ncontainer_name: fail2ban\ncap_add:\n- NET_ADMIN\n- NET_RAW\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\nvolumes:\n- /path/to/appdata/config:/config\n- /var/log:/var/log:ro\n- /path/to/airsonic/log:/remotelogs/airsonic:ro #optional\n- /path/to/apache2/log:/remotelogs/apache2:ro #optional\n- /path/to/authelia/log:/remotelogs/authelia:ro #optional\n- /path/to/emby/log:/remotelogs/emby:ro #optional\n- /path/to/filebrowser/log:/remotelogs/filebrowser:ro #optional\n- /path/to/homeassistant/log:/remotelogs/homeassistant:ro #optional\n- /path/to/lighttpd/log:/remotelogs/lighttpd:ro #optional\n- /path/to/nextcloud/log:/remotelogs/nextcloud:ro #optional\n- /path/to/nginx/log:/remotelogs/nginx:ro #optional\n- /path/to/nzbget/log:/remotelogs/nzbget:ro #optional\n- /path/to/overseerr/log:/remotelogs/overseerr:ro #optional\n- /path/to/prowlarr/log:/remotelogs/prowlarr:ro #optional\n- /path/to/radarr/log:/remotelogs/radarr:ro #optional\n- /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro #optional\n- /path/to/sonarr/log:/remotelogs/sonarr:ro #optional\n- /path/to/unificontroller/log:/remotelogs/unificontroller:ro #optional\n- /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-fail2ban/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=fail2ban \\\n--net=host \\\n--cap-add=NET_ADMIN \\\n--cap-add=NET_RAW \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-v /path/to/appdata/config:/config \\\n-v /var/log:/var/log:ro \\\n-v /path/to/airsonic/log:/remotelogs/airsonic:ro `#optional` \\\n-v /path/to/apache2/log:/remotelogs/apache2:ro `#optional` \\\n-v /path/to/authelia/log:/remotelogs/authelia:ro `#optional` \\\n-v /path/to/emby/log:/remotelogs/emby:ro `#optional` \\\n-v /path/to/filebrowser/log:/remotelogs/filebrowser:ro `#optional` \\\n-v /path/to/homeassistant/log:/remotelogs/homeassistant:ro `#optional` \\\n-v /path/to/lighttpd/log:/remotelogs/lighttpd:ro `#optional` \\\n-v /path/to/nextcloud/log:/remotelogs/nextcloud:ro `#optional` \\\n-v /path/to/nginx/log:/remotelogs/nginx:ro `#optional` \\\n-v /path/to/nzbget/log:/remotelogs/nzbget:ro `#optional` \\\n-v /path/to/overseerr/log:/remotelogs/overseerr:ro `#optional` \\\n-v /path/to/prowlarr/log:/remotelogs/prowlarr:ro `#optional` \\\n-v /path/to/radarr/log:/remotelogs/radarr:ro `#optional` \\\n-v /path/to/sabnzbd/log:/remotelogs/sabnzbd:ro `#optional` \\\n-v /path/to/sonarr/log:/remotelogs/sonarr:ro `#optional` \\\n-v /path/to/unificontroller/log:/remotelogs/unificontroller:ro `#optional` \\\n-v /path/to/vaultwarden/log:/remotelogs/vaultwarden:ro `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/fail2ban:latest\n
    "},{"location":"images/docker-fail2ban/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-fail2ban/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-fail2ban/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Shares host networking with container."},{"location":"images/docker-fail2ban/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York"},{"location":"images/docker-fail2ban/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /var/log:ro Host logs. Mounted as Read Only. /remotelogs/airsonic:ro Optional path to airsonic log folder. Mounted as Read Only. /remotelogs/apache2:ro Optional path to apache2 log folder. Mounted as Read Only. /remotelogs/authelia:ro Optional path to authelia log folder. Mounted as Read Only. /remotelogs/emby:ro Optional path to emby log folder. Mounted as Read Only. /remotelogs/filebrowser:ro Optional path to filebrowser log folder. Mounted as Read Only. /remotelogs/homeassistant:ro Optional path to homeassistant log folder. Mounted as Read Only. /remotelogs/lighttpd:ro Optional path to lighttpd log folder. Mounted as Read Only. /remotelogs/nextcloud:ro Optional path to nextcloud log folder. Mounted as Read Only. /remotelogs/nginx:ro Optional path to nginx log folder. Mounted as Read Only. /remotelogs/nzbget:ro Optional path to nzbget log folder. Mounted as Read Only. /remotelogs/overseerr:ro Optional path to overseerr log folder. Mounted as Read Only. /remotelogs/prowlarr:ro Optional path to prowlarr log folder. Mounted as Read Only. /remotelogs/radarr:ro Optional path to radarr log folder. Mounted as Read Only. /remotelogs/sabnzbd:ro Optional path to sabnzbd log folder. Mounted as Read Only. /remotelogs/sonarr:ro Optional path to sonarr log folder. Mounted as Read Only. /remotelogs/unificontroller:ro Optional path to unificontroller log folder. Mounted as Read Only. /remotelogs/vaultwarden:ro Optional path to vaultwarden log folder. Mounted as Read Only."},{"location":"images/docker-fail2ban/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-fail2ban/#portainer-notice","title":"Portainer notice","text":"

    {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

    "},{"location":"images/docker-fail2ban/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-fail2ban/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-fail2ban/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-fail2ban/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-fail2ban/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it fail2ban /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fail2ban
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fail2ban
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fail2ban:latest
    "},{"location":"images/docker-fail2ban/#versions","title":"Versions","text":"
    • 15.12.22: - Rebase to Alpine 3.17, Add ssmtp and whois packages. Symlink config to allow live reloading.
    • 25.08.22: - Update README to clarify remote log information.
    • 09.08.22: - Initial Release.
    "},{"location":"images/docker-feed2toot/","title":"feed2toot","text":""},{"location":"images/docker-feed2toot/#linuxserverfeed2toot","title":"linuxserver/feed2toot","text":"

    Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.

    "},{"location":"images/docker-feed2toot/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-feed2toot/#application-setup","title":"Application Setup","text":"

    Run docker run --rm -it -w /config -v /path/to/data:/config -e PUID=1000 -e PGID=1000 lscr.io/linuxserver/feed2toot /usr/bin/register_feed2toot_app to generate credential files (be sure to set the correct volume path and PUID/PGID values).

    Edit the feed2toot.ini in /config to configure your instance name and RSS feeds.

    See the feed2toot docs for more information.

    "},{"location":"images/docker-feed2toot/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-feed2toot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfeed2toot:\nimage: lscr.io/linuxserver/feed2toot:latest\ncontainer_name: feed2toot\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- FEED_LIMIT=5 #optional\nvolumes:\n- /path/to/data:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-feed2toot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=feed2toot \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e FEED_LIMIT=5 `#optional` \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/feed2toot:latest\n
    "},{"location":"images/docker-feed2toot/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-feed2toot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-feed2toot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. FEED_LIMIT=5 Limit number of RSS entries published at each execution."},{"location":"images/docker-feed2toot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Local path for feed2toot config files."},{"location":"images/docker-feed2toot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-feed2toot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-feed2toot/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-feed2toot/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-feed2toot/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-feed2toot/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it feed2toot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f feed2toot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' feed2toot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/feed2toot:latest
    "},{"location":"images/docker-feed2toot/#versions","title":"Versions","text":"
    • 22.12.22: - Rebase to alpine 3.17.
    • 14.11.22: - Initial Release.
    "},{"location":"images/docker-ffmpeg/","title":"ffmpeg","text":"

    The LinuxServer.io team brings you another container release featuring :-

    • regular and timely application updates
    • easy user mappings (PGID, PUID)
    • custom base image with s6 overlay
    • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
    • regular security updates

    Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * Podcast - on hiatus. Coming back soon (late 2018). * Open Collective - please consider helping us by either donating or contributing to our budget

    FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.

    "},{"location":"images/docker-ffmpeg/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ffmpeg/#usage","title":"Usage","text":"

    Unlike most of our container library this image is meant to be run ephemerally from the command line parsing user input for a custom FFmpeg command. You will need to understand some Docker basics to use this image and be familiar with how to construct an FFmpeg command. In the commands below we will be bind mounting our current working directory from the CLI to /config, the assumption is that input.mkv is in your current working directory.

    If an input file is detected we will run FFmpeg as that user/group so the output file will match it's permissions. The image supports Hardware acceleration on x86 pay close attention to the variables for the examples below.

    "},{"location":"images/docker-ffmpeg/#basic-transcode","title":"Basic Transcode","text":"
    docker run --rm -it \\\n  -v $(pwd):/config \\\n  linuxserver/ffmpeg \\\n  -i /config/input.mkv \\\n  -c:v libx264 \\\n  -b:v 4M \\\n  -vf scale=1280:720 \\\n  -c:a copy \\\n  /config/output.mkv\n
    "},{"location":"images/docker-ffmpeg/#hardware-accelerated-vaapi","title":"Hardware accelerated (VAAPI)","text":"
    docker run --rm -it \\\n  --device=/dev/dri:/dev/dri \\\n  -v $(pwd):/config \\\n  linuxserver/ffmpeg \\\n  -vaapi_device /dev/dri/renderD128 \\\n  -i /config/input.mkv \\\n  -c:v h264_vaapi \\\n  -b:v 4M \\\n  -vf 'format=nv12|vaapi,hwupload,scale_vaapi=w=1280:h=720' \\\n  -c:a copy \\\n  /config/output.mkv\n
    "},{"location":"images/docker-ffmpeg/#nvidia-hardware-accelerated","title":"Nvidia Hardware accelerated","text":"
    docker run --rm -it \\\n  --runtime=nvidia \\\n  -v $(pwd):/config \\\n  linuxserver/ffmpeg \\\n  -hwaccel nvdec \\\n  -i /config/input.mkv \\\n  -c:v h264_nvenc \\\n  -b:v 4M \\\n  -vf scale=1280:720 \\\n  -c:a copy \\\n  /config/output.mkv\n
    "},{"location":"images/docker-ffmpeg/#building-locally","title":"Building locally","text":"

    If you want to make local modifications to these images for development purposes or just to customize the logic:

    git clone https://github.com/linuxserver/docker-ffmpeg.git\ncd docker-ffmpeg\ndocker build \\\n  --no-cache \\\n  --pull \\\n  -t linuxserver/ffmpeg:latest .\n

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    "},{"location":"images/docker-ffmpeg/#versions","title":"Versions","text":"
    • 14.12.22: - Rebase to Jammy, bump to 5.1.2.
    • 19.06.22: - Rebase to Focal.
    • 26.08.21: - Add support for libOpenCL.
    • 01.07.21: - Bump to 4.4.
    • 17.06.20: - Bump to 4.3.
    • 16.06.20: - Add support for libvmaf.
    • 01.08.19: - Initial release.
    "},{"location":"images/docker-filezilla/","title":"filezilla","text":""},{"location":"images/docker-filezilla/#linuxserverfilezilla","title":"linuxserver/filezilla","text":"

    FIleZilla Client is a fast and reliable cross-platform FTP, FTPS and SFTP client with lots of useful features and an intuitive graphical user interface.

    "},{"location":"images/docker-filezilla/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-filezilla/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-filezilla/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-filezilla/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfilezilla:\nimage: lscr.io/linuxserver/filezilla:latest\ncontainer_name: filezilla\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-filezilla/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=filezilla \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/filezilla:latest\n
    "},{"location":"images/docker-filezilla/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-filezilla/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 FileZilla desktop gui."},{"location":"images/docker-filezilla/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-filezilla/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-filezilla/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-filezilla/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-filezilla/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-filezilla/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-filezilla/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-filezilla/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it filezilla /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f filezilla
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' filezilla
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/filezilla:latest
    "},{"location":"images/docker-filezilla/#versions","title":"Versions","text":"
    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 18.04.21: - Initial release.
    "},{"location":"images/docker-firefox/","title":"firefox","text":""},{"location":"images/docker-firefox/#linuxserverfirefox","title":"linuxserver/firefox","text":"

    Firefox Browser, also known as Mozilla Firefox or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. Firefox uses the Gecko layout engine to render web pages, which implements current and anticipated web standards.

    "},{"location":"images/docker-firefox/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-firefox/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-firefox/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-firefox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfirefox:\nimage: lscr.io/linuxserver/firefox:latest\ncontainer_name: firefox\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nshm_size: \"1gb\"\nrestart: unless-stopped\n
    "},{"location":"images/docker-firefox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=firefox \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--shm-size=\"1gb\" \\\n--restart unless-stopped \\\nlscr.io/linuxserver/firefox:latest\n
    "},{"location":"images/docker-firefox/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-firefox/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Firefox desktop gui."},{"location":"images/docker-firefox/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-firefox/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-firefox/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-firefox/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-firefox/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-firefox/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-firefox/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-firefox/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it firefox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f firefox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' firefox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/firefox:latest
    "},{"location":"images/docker-firefox/#versions","title":"Versions","text":"
    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15, stop using ESR.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 19.04.21: - Initial release.
    "},{"location":"images/docker-fleet/","title":"fleet","text":""},{"location":"images/docker-fleet/#linuxserverfleet","title":"linuxserver/fleet","text":"

    Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

    "},{"location":"images/docker-fleet/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-fleet/#application-setup","title":"Application Setup","text":"

    Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup. Once done, that page will no longer be available. A restart is preferable as it will remove the page altogether. Once complete, you can log into the app via http://your_ip_here:8080/login to manage your repositories.

    "},{"location":"images/docker-fleet/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-fleet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfleet:\nimage: lscr.io/linuxserver/fleet:latest\ncontainer_name: fleet\nenvironment:\n- PUID=1000\n- PGID=1000\n- fleet_admin_authentication_type=DATABASE\n- fleet_database_url=jdbc:mariadb://<url>:3306/fleet\n- fleet_database_username=fleet_user\n- fleet_database_password=dbuserpassword\n- fleet_admin_secret=randomstring #optional\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-fleet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=fleet \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e fleet_admin_authentication_type=DATABASE \\\n-e fleet_database_url=jdbc:mariadb://<url>:3306/fleet \\\n-e fleet_database_username=fleet_user \\\n-e fleet_database_password=dbuserpassword \\\n-e fleet_admin_secret=randomstring `#optional` \\\n-p 8080:8080 \\\n-v </path/to/appdata/config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/fleet:latest\n
    "},{"location":"images/docker-fleet/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-fleet/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Http port"},{"location":"images/docker-fleet/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation fleet_admin_authentication_type=DATABASE A switch to define how Fleet manages user logins. If set to DATABASE, see the related optional params. Can be set to either DATABASE or PROPERTIES. fleet_database_url=jdbc:mariadb://<url>:3306/fleet The full JDBC connection string to the Fleet database fleet_database_username=fleet_user The username with the relevant GRANT permissions for the database fleet_database_password=dbuserpassword The database user's password. fleet_admin_secret=randomstring A string used as part of the password key derivation process."},{"location":"images/docker-fleet/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config The primary config file and rolling log files."},{"location":"images/docker-fleet/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-fleet/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-fleet/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-fleet/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-fleet/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-fleet/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it fleet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f fleet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fleet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fleet:latest
    "},{"location":"images/docker-fleet/#versions","title":"Versions","text":"
    • 02.05.22: - Rebase to Alpine 3.15.
    • 13.12.21: - Add mitigations for CVE-2021-44228
    • 26.04.20: - Updated to keep in line with v2.0.0 branch of Fleet
    • 19.12.19: - Rebasing to alpine 3.11.
    • 02.07.19: - Rebasing to alpine 3.10.
    • 02.07.19: - Stop container if fleet fails.
    • 19.05.19: - Use new base images for arm versions.
    • 01.04.19: - Initial Release
    "},{"location":"images/docker-foldingathome/","title":"foldingathome","text":""},{"location":"images/docker-foldingathome/#linuxserverfoldingathome","title":"linuxserver/foldingathome","text":"

    Folding@home is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

    "},{"location":"images/docker-foldingathome/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-foldingathome/#application-setup","title":"Application Setup","text":"

    This image sets up the Folding@home client. The interface is available at http://your-ip:7396.

    The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium or higher). For more fine grained control of individual devices, you can use the FAHControl app on a different device and connect remotely via port 36330 (no password).

    There are a couple of minor issues with the webgui: - If you get an \"ERR_EMPTY_RESPONSE\" error when trying to access via IP, it's most likely due to a clash of cookies/cache. Try opening in an incgnito window. - If you're getting a constant refresh of the window but no display of info, try a force refresh via shft-F5 or ctrl-F5.

    "},{"location":"images/docker-foldingathome/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-foldingathome/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.

    "},{"location":"images/docker-foldingathome/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-foldingathome/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfoldingathome:\nimage: lscr.io/linuxserver/foldingathome:latest\ncontainer_name: foldingathome\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 7396:7396\n- 36330:36330 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-foldingathome/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=foldingathome \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 7396:7396 \\\n-p 36330:36330 `#optional` \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/foldingathome:latest\n
    "},{"location":"images/docker-foldingathome/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-foldingathome/#ports-p","title":"Ports (-p)","text":"Parameter Function 7396 Folding@home web gui. 36330 Optional port for connecting remotely via FAHControl app (no password)."},{"location":"images/docker-foldingathome/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-foldingathome/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Folding@home should store its database and config."},{"location":"images/docker-foldingathome/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-foldingathome/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-foldingathome/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-foldingathome/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-foldingathome/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-foldingathome/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it foldingathome /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f foldingathome
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' foldingathome
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/foldingathome:latest
    "},{"location":"images/docker-foldingathome/#versions","title":"Versions","text":"
    • 14.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3.
    • 15.01.22: - Rebase to Ubuntu Focal. Add arm64v8 builds (cpu only). Increase verbosity about gpu driver permission settings.
    • 09.01.21: - Add nvidia.icd.
    • 14.04.20: - Add Folding@home donation links.
    • 20.03.20: - Initial release.
    "},{"location":"images/docker-freshrss/","title":"freshrss","text":""},{"location":"images/docker-freshrss/#linuxserverfreshrss","title":"linuxserver/freshrss","text":"

    Freshrss is a free, self-hostable aggregator for rss feeds.

    "},{"location":"images/docker-freshrss/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-freshrss/#application-setup","title":"Application Setup","text":"

    Access the webui set up wizard at http://serverIP:port

    For external databases, create a user and database in your mysql/mariadb server (not root) and then follow the setup wizard in the webui. Use the IP address for \"host\" of your database server.

    Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart.

    "},{"location":"images/docker-freshrss/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-freshrss/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nfreshrss:\nimage: lscr.io/linuxserver/freshrss:latest\ncontainer_name: freshrss\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-freshrss/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=freshrss \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/freshrss:latest\n
    "},{"location":"images/docker-freshrss/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-freshrss/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-freshrss/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-freshrss/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Local storage for freshrss site files."},{"location":"images/docker-freshrss/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-freshrss/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-freshrss/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-freshrss/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-freshrss/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-freshrss/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it freshrss /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f freshrss
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freshrss
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freshrss:latest
    "},{"location":"images/docker-freshrss/#versions","title":"Versions","text":"
    • 21.10.22: - Fix cron init to properly migrate existing installations to new app location.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.03.20: - Internalize app and enable updates for existing users, allow user customized crontab.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Add multi arch and pipeline logic.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 17.03.18: - Update nginx config to resolve api not working.
    • 08.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 08.10.16: - Add Sqlite support for standalone operation.
    • 27.09.16: - Fix for cron job.
    • 11.09.16: - Add layer badges to README.
    • 23.11.15: - Update dependencies to latest requirements.
    • 21.08.15: - Initial Release.
    "},{"location":"images/docker-gazee/","title":"gazee","text":""},{"location":"images/docker-gazee/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-gazee/#linuxservergazee","title":"linuxserver/gazee","text":"

    Gazee is a WebApp Comic Reader for your favorite digital comics. Reach and read your comic library from any web connected device with a modern web browser.

    "},{"location":"images/docker-gazee/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v6-latest"},{"location":"images/docker-gazee/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-gazee/#docker","title":"docker","text":"
    docker create \\\n  --name=gazee \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -p 4242:4242 \\\n  -v </path/to/appdata/config>:/config \\\n  -v <path to comics>:/comics \\\n  -v <path to mylar data>:/mylar \\\n  -v <path to SSL certs>:/certs \\\n  --restart unless-stopped \\\n  linuxserver/gazee\n
    "},{"location":"images/docker-gazee/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2\"\nservices:\ngazee:\nimage: linuxserver/gazee\ncontainer_name: gazee\nenvironment:\n- PUID=1000\n- PGID=1000\nvolumes:\n- </path/to/appdata/config>:/config\n- <path to comics>:/comics\n- <path to mylar data>:/mylar\n- <path to SSL certs>:/certs\nports:\n- 4242:4242\nrestart: unless-stopped\n
    "},{"location":"images/docker-gazee/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-gazee/#ports-p","title":"Ports (-p)","text":"Parameter Function 4242 WebUI"},{"location":"images/docker-gazee/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"images/docker-gazee/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Gazee should store config files. /comics Path to comics folder. /mylar Path to Mylar DB. /certs Where SSL certs should be stored."},{"location":"images/docker-gazee/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-gazee/#application-setup","title":"Application Setup","text":"

    Webui can be found at your-ip:4242

    Default username and password for the web interface:

    • Username: admin
    • Password: gazee

    Click the gear icon to go to the settings page.

    Change the default admin password or add a new admin and remove the admin user altogether.

    Comic path should be set to /comics

    Optional Mylar DB path should be set to /mylar

    Optional path for certificates and keys should be set to /certs

    After you update the settings, Gazee will restart and begin an intial scan of your comic library.

    Happy Reading!

    "},{"location":"images/docker-gazee/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it gazee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gazee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gazee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/gazee
    "},{"location":"images/docker-gazee/#versions","title":"Versions","text":"
    • 27.03.19: - Deprecate image and get in semi working state.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 30.12.17: - Ensure version 11 of cherrypy.
    • 07.12.17: - Initial Release.
    "},{"location":"images/docker-gmail-order-bot/","title":"gmail-order-bot","text":""},{"location":"images/docker-gmail-order-bot/#lsiodevgmail-order-bot","title":"lsiodev/gmail-order-bot","text":"

    Gmail-order-bot - A bot used to leverage a Gmail account as an order messaging service to consume email orders from Nano Checkout and process them using any custom logic you choose.

    "},{"location":"images/docker-gmail-order-bot/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-gmail-order-bot/#application-setup","title":"Application Setup","text":"

    This container is for developers only! We make pre-defined bots we use in our workflow, but you have to have an underlying understanding of javascript and some basic Docker skills to use it.

    The entire basis of this is to act as middleware between your email address receiving orders from https://checkout.linuxserver.io and send them to some external service. The bot will archive any messages that do not come from orders@nanocheckout.com with valid DKIM signatures, so definetly do not use this on a personal account.

    The concept behind this bot and using email as a destination for orders is to serve normal users that simply want an email for an order out of the box and provide a free messaging queue akin to something like RabbitMQ for people that want to automate order ingestion.

    By default we include bots we use that will be copied over on first container run, for example a simple discord ping when an order is received with the order details:

    const Discord = require('discord.js');\nconst YAML = require('yaml');\nconst discordtoken = process.env.DISCORD_TOKEN;\nconst roomid = process.env.DISCORD_ROOM\n\n\nexports.orderbot = async function(order) {\n  return new Promise(resolve => {\n    const client = new Discord.Client();\n    client.login(discordtoken);\n    client.on('ready', async () => {\n      delete order.rawpayload\n      await client.channels.cache.get(roomid.toString()).send(YAML.stringify(order));\n      client.destroy();\n      resolve(true)\n    })\n  });\n}\n

    This code will be passed an order object containing all the order details parsed from the email message. Here we use custom env variables to set application settings to connect up to and send a message to discord.

    In order to use this bot you will need to perform the following setup steps: 1. Create a dedicated gmail account to use for https://checkout.linuxserver.io 2. Enable API access to this Gmail account by clicking on Enable the Gmail API here https://developers.google.com/gmail/api/quickstart/nodejs 3. Save your credentials.json file from that action to the folder you will be bind mounting as /config 4. Run docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v /path/to/data:/config --entrypoint /config.sh lsiodev/gmail-order-bot 5. Go to the URL prompted and enter the key you get from it. 6. Start the container using the run/compose example in this readme.

    When the container starts if you are using a custom bot located in /config/bots it will install the node modules included in it's package.json, do not use system level node modules this container is Alpine based and it will cause conflicts.

    From there the bot will loop in for your defined timeout and pull in emails and spit out orders to your destination.

    "},{"location":"images/docker-gmail-order-bot/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-gmail-order-bot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ngmail-order-bot:\nimage: lscr.io/lsiodev/gmail-order-bot:latest\ncontainer_name: gmail-order-bot\nenvironment:\n- PUID=1000\n- PGID=1000\n- BOT_NAME=discord\n- LOOP_TIME=60\nvolumes:\n- /path/to/data:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-gmail-order-bot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=gmail-order-bot \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e BOT_NAME=discord \\\n-e LOOP_TIME=60 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/lsiodev/gmail-order-bot:latest\n
    "},{"location":"images/docker-gmail-order-bot/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-gmail-order-bot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-gmail-order-bot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation BOT_NAME=discord On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots) LOOP_TIME=60 Time in seconds to reach into gmail and get new messages to process"},{"location":"images/docker-gmail-order-bot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Path to gmail tokens and custom/default bots"},{"location":"images/docker-gmail-order-bot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-gmail-order-bot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-gmail-order-bot/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-gmail-order-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-gmail-order-bot/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-gmail-order-bot/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it gmail-order-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f gmail-order-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gmail-order-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/lsiodev/gmail-order-bot:latest
    "},{"location":"images/docker-gmail-order-bot/#versions","title":"Versions","text":"
    • 06.07.20: - Initial Release.
    "},{"location":"images/docker-grav/","title":"grav","text":""},{"location":"images/docker-grav/#linuxservergrav","title":"linuxserver/grav","text":"

    Grav is a Fast, Simple, and Flexible, file-based Web-platform.

    "},{"location":"images/docker-grav/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-grav/#application-setup","title":"Application Setup","text":"

    For more information check out the Grav documentation. Our image includes the grav-admin plugin.

    To use the CLI tools you need to pass the working directory as part of your exec command (or use an interactive shell), e.g. docker exec -it -w /app/www/public grav bin/gpm

    "},{"location":"images/docker-grav/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-grav/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ngrav:\nimage: lscr.io/linuxserver/grav:latest\ncontainer_name: grav\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-grav/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=grav \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-p 80:80 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/grav:latest\n
    "},{"location":"images/docker-grav/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-grav/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend"},{"location":"images/docker-grav/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York"},{"location":"images/docker-grav/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-grav/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-grav/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-grav/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-grav/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-grav/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-grav/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it grav /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grav
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grav
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grav:latest
    "},{"location":"images/docker-grav/#versions","title":"Versions","text":"
    • 11.12.22: - Rebase to Alpine 3.17, PHP 8.1.
    • 05.09.22: - All php to read envs passed to container.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 03.09.21: - Added support for Redis caching.
    • 01.07.21: - Rebase to Alpine 3.14.
    • 09.04.21: - Initial Release.
    "},{"location":"images/docker-grocy/","title":"grocy","text":""},{"location":"images/docker-grocy/#linuxservergrocy","title":"linuxserver/grocy","text":"

    Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

    Keep track of your purchases, how much food you are wasting, what chores need doing and what batteries need charging with this proudly Open Source tool

    For more information on grocy visit their website and check it out: https://grocy.info

    "},{"location":"images/docker-grocy/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-grocy/#application-setup","title":"Application Setup","text":"

    Grocy is simple to get running. Configure the container with instructions below, start it, and you can then access it by visiting http://your.ip:9283 - once the page loads, you can log in with the default username and password of admin / admin

    "},{"location":"images/docker-grocy/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-grocy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\ngrocy:\nimage: lscr.io/linuxserver/grocy:latest\ncontainer_name: grocy\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 9283:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-grocy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=grocy \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 9283:80 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/grocy:latest\n
    "},{"location":"images/docker-grocy/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-grocy/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 9283 on the host"},{"location":"images/docker-grocy/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London for specifying your timezone"},{"location":"images/docker-grocy/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store any uploaded data on the docker host"},{"location":"images/docker-grocy/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-grocy/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-grocy/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-grocy/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-grocy/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-grocy/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it grocy /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f grocy
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grocy
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grocy:latest
    "},{"location":"images/docker-grocy/#versions","title":"Versions","text":"
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.08.21: - Rebase to Alpine 3.14 and PHP 8.
    • 25.07.21: - Add 'int','json' and 'zlib' PHP extensions.
    • 10.05.21: - Reduce image size.
    • 08.04.21: - Update docs to reflect jenkins builder changes.
    • 17.02.21: - Rebasing to alpine 3.13.
    • 26.01.21: - Add 'ldap' PHP extension.
    • 22.12.20: - Add 'ctype' PHP extension.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Add 'gd' PHP extension.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 27.12.18: - Initial Release.
    "},{"location":"images/docker-guacd/","title":"guacd","text":""},{"location":"images/docker-guacd/#linuxserverguacd","title":"linuxserver/guacd","text":"

    Guacd - Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. This container is only the backend server component needed to use The official or 3rd party HTML5 frontends.

    "},{"location":"images/docker-guacd/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-guacd/#application-setup","title":"Application Setup","text":"

    This is a backend only service, to leverage Guacd server you need to use either the official Java frontend guacamole-client or an open source alternative like guacamole-lite.

    "},{"location":"images/docker-guacd/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-guacd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nguacd:\nimage: lscr.io/linuxserver/guacd:latest\ncontainer_name: guacd\nports:\n- 4822:4822\nrestart: unless-stopped\n
    "},{"location":"images/docker-guacd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=guacd \\\n-p 4822:4822 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/guacd:latest\n
    "},{"location":"images/docker-guacd/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-guacd/#ports-p","title":"Ports (-p)","text":"Parameter Function 4822 Port Guacamole server listens on"},{"location":"images/docker-guacd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"images/docker-guacd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-guacd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-guacd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-guacd/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-guacd/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-guacd/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it guacd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f guacd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' guacd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/guacd:latest
    "},{"location":"images/docker-guacd/#versions","title":"Versions","text":"
    • 11.03.22: - Bump to 1.4.0.
    • 15.05.21: - Add terminus font for SSH support.
    • 08.05.21: - Bump to 1.3.0, rebase to Alpine.
    • 27.07.20: - Bump to 1.2.0.
    • 17.04.20: - Bump back 1.1.0, rebase to focal
    • 08.02.20: - Bump to 1.1.0.
    • 25.05.19: - Initial Release.
    "},{"location":"images/docker-habridge/","title":"habridge","text":""},{"location":"images/docker-habridge/#linuxserverhabridge","title":"linuxserver/habridge","text":"

    Habridge emulates Philips Hue API to other home automation gateways such as an Amazon Echo/Dot Gen 1 (gen 2 has issues discovering ha-bridge) or other systems that support Philips Hue. The Bridge handles basic commands such as \"On\", \"Off\" and \"brightness\" commands of the hue protocol. This bridge can control most devices that have a distinct API.

    In the cases of systems that require authorization and/or have APIs that cannot be handled in the current method, a module may need to be built. The Harmony Hub is such a module and so is the Nest module. The Bridge has helpers to build devices for the gateway for the Logitech Harmony Hub, Vera, Vera Lite or Vera Edge, Nest, Somfy Tahoma, Home Assistant, Domoticz, MQTT, HAL, Fibaro, HomeWizard, LIFX, OpenHAB, FHEM, Broadlink and the ability to proxy all of your real Hue bridges behind this bridge.

    This bridge was built to help put the Internet of Things together.

    For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki

    "},{"location":"images/docker-habridge/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-habridge/#application-setup","title":"Application Setup","text":"

    To set up the ha-bridge simply go to http://localhost:8080. Once you are in the webui you can add devices and configure ha-bridge to your liking.

    For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki

    "},{"location":"images/docker-habridge/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-habridge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nhabridge:\nimage: lscr.io/linuxserver/habridge:latest\ncontainer_name: habridge\nenvironment:\n- PUID=1000\n- PGID=1000\n- SEC_KEY=<Your Key To Encrypt Security Data>\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 8080:8080\n- 50000:50000\nrestart: unless-stopped\n
    "},{"location":"images/docker-habridge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=habridge \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e SEC_KEY=<Your Key To Encrypt Security Data> \\\n-e TZ=Europe/London \\\n-p 8080:8080 \\\n-p 50000:50000 \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/habridge:latest\n
    "},{"location":"images/docker-habridge/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-habridge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 50000 HABridge communication port."},{"location":"images/docker-habridge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SEC_KEY=<Your Key To Encrypt Security Data> Key used to secure communication. TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-habridge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where HABridge stores config files and data."},{"location":"images/docker-habridge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-habridge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-habridge/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-habridge/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-habridge/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-habridge/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it habridge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f habridge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' habridge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/habridge:latest
    "},{"location":"images/docker-habridge/#versions","title":"Versions","text":"
    • 11.12.22: - Rebasing to alpine 3.17.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to alpine 3.8.
    • 12.04.18: - Add workaround to bind to port 80 if needed.
    • 08.04.18: - Initial Release.
    "},{"location":"images/docker-headphones/","title":"headphones","text":""},{"location":"images/docker-headphones/#linuxserverheadphones","title":"linuxserver/headphones","text":"

    Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole.

    "},{"location":"images/docker-headphones/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-headphones/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-headphones/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nheadphones:\nimage: lscr.io/linuxserver/headphones:latest\ncontainer_name: headphones\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/downloads>:/downloads\n- </path/to/music>:/music\nports:\n- 8181:8181\nrestart: unless-stopped\n
    "},{"location":"images/docker-headphones/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=headphones \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8181:8181 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/downloads>:/downloads \\\n-v </path/to/music>:/music \\\n--restart unless-stopped \\\nlscr.io/linuxserver/headphones:latest\n
    "},{"location":"images/docker-headphones/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-headphones/#ports-p","title":"Ports (-p)","text":"Parameter Function 8181 Application WebUI"},{"location":"images/docker-headphones/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-headphones/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /downloads ISOs. /music Your music directory."},{"location":"images/docker-headphones/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-headphones/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-headphones/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-headphones/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-headphones/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-headphones/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it headphones /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f headphones
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' headphones
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/headphones:latest
    "},{"location":"images/docker-headphones/#versions","title":"Versions","text":"
    • 02.02.22: - Rebasing to alpine 3.15. Updating to Python 3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 09.05.19: - Add default UTC timezone if user does not set it.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Rebase to alpine 3.8.
    • 03.04.18: - Remove forced port and update README.
    • 05.01.18: - Deprecate cpu_core routine lack of scaling.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add flac package to handle FLAC based .cue.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Reduce layer, replace broken source for shntool.
    • 07.02.17: - Rebase to alpine 3.5.
    • 23.12.16: - Fix capitalisation in README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, compile shntool.
    • 08.08.16: - Rebase to alpine linux.
    • 18.07.15: - Inital Release
    "},{"location":"images/docker-healthchecks/","title":"healthchecks","text":""},{"location":"images/docker-healthchecks/#linuxserverhealthchecks","title":"linuxserver/healthchecks","text":"

    Healthchecks is a watchdog for your cron jobs. It's a web server that listens for pings from your cron jobs, plus a web interface.

    "},{"location":"images/docker-healthchecks/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-healthchecks/#application-setup","title":"Application Setup","text":"

    Access the WebUI at :8000. For more information, check out Healthchecks."},{"location":"images/docker-healthchecks/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-healthchecks/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nhealthchecks:\nimage: lscr.io/linuxserver/healthchecks:latest\ncontainer_name: healthchecks\nenvironment:\n- PUID=1000\n- PGID=1000\n- SITE_ROOT=\n- SITE_NAME=\n- DEFAULT_FROM_EMAIL=\n- EMAIL_HOST=\n- EMAIL_PORT=\n- EMAIL_HOST_USER=\n- EMAIL_HOST_PASSWORD=\n- EMAIL_USE_TLS=\n- SUPERUSER_EMAIL=\n- SUPERUSER_PASSWORD=\n- REGENERATE_SETTINGS= #optional\n- ALLOWED_HOSTS= #optional\n- APPRISE_ENABLED= #optional\n- DEBUG= #optional\n- INTEGRATIONS_ALLOW_PRIVATE_IPS= #optional\n- PING_EMAIL_DOMAIN= #optional\n- SECRET_KEY= #optional\n- SITE_LOGO_URL= #optional\nvolumes:\n- /path/to/data:/config\nports:\n- 8000:8000\n- 2525:2525 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-healthchecks/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=healthchecks \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e SITE_ROOT= \\\n-e SITE_NAME= \\\n-e DEFAULT_FROM_EMAIL= \\\n-e EMAIL_HOST= \\\n-e EMAIL_PORT= \\\n-e EMAIL_HOST_USER= \\\n-e EMAIL_HOST_PASSWORD= \\\n-e EMAIL_USE_TLS= \\\n-e SUPERUSER_EMAIL= \\\n-e SUPERUSER_PASSWORD= \\\n-e REGENERATE_SETTINGS= `#optional` \\\n-e ALLOWED_HOSTS= `#optional` \\\n-e APPRISE_ENABLED= `#optional` \\\n-e DEBUG= `#optional` \\\n-e INTEGRATIONS_ALLOW_PRIVATE_IPS= `#optional` \\\n-e PING_EMAIL_DOMAIN= `#optional` \\\n-e SECRET_KEY= `#optional` \\\n-e SITE_LOGO_URL= `#optional` \\\n-p 8000:8000 \\\n-p 2525:2525 `#optional` \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/healthchecks:latest\n
    "},{"location":"images/docker-healthchecks/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-healthchecks/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Healthchecks Web UI 2525 Port for inbound SMTP pings"},{"location":"images/docker-healthchecks/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SITE_ROOT= The site's top-level URL and the port it listens to if differrent than 80 or 443 (e.g., https://healthchecks.example.com:8000) SITE_NAME= The site's name (e.g., \"Example Corp HealthChecks\") DEFAULT_FROM_EMAIL= From email for alerts EMAIL_HOST= SMTP host EMAIL_PORT= SMTP port EMAIL_HOST_USER= SMTP user EMAIL_HOST_PASSWORD= SMTP password EMAIL_USE_TLS= Use TLS for SMTP (True or False) SUPERUSER_EMAIL= Superuser email SUPERUSER_PASSWORD= Superuser password REGENERATE_SETTINGS= Defaults to False. Set to True to always override the local_settings.py file with values from environment variables. Do not set to True if you have made manual modifications to this file. ALLOWED_HOSTS= Array of valid hostnames for the server [\"test.com\",\"test2.com\"] (default: [\"*\"]) APPRISE_ENABLED= Defaults to False. A boolean that turns on/off the Apprise integration (https://github.com/caronc/apprise) DEBUG= Defaults to True. Debug mode relaxes CSRF protections and increases logging verbosity but should be disabled for production instances as it will impact performance and security. INTEGRATIONS_ALLOW_PRIVATE_IPS= Defaults to False. Set to True to allow integrations to connect to private IP addresses. PING_EMAIL_DOMAIN= The domain to use for generating ping email addresses. SECRET_KEY= A secret key used for cryptographic signing. Will generate a secure value if one is not supplied SITE_LOGO_URL= Full URL to custom site logo"},{"location":"images/docker-healthchecks/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and healthchecks config directory"},{"location":"images/docker-healthchecks/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-healthchecks/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-healthchecks/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-healthchecks/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-healthchecks/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-healthchecks/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it healthchecks /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f healthchecks
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' healthchecks
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/healthchecks:latest
    "},{"location":"images/docker-healthchecks/#versions","title":"Versions","text":"
    • 22.12.22: - Rebase to Alpine 3.17. Add extra deps for pycurl. Add INTEGRATIONS_ALLOW_PRIVATE_IPS.
    • 18.10.22: - Add curl-dev to fix broken pip builds.
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 27.09.22: - Fix sending of Email Reports
    • 08.01.22: - Fix CSRF setting for Django 4.0 (introduced in v1.25.0)
    • 11.11.21: - Add Apprise to Docker as in v1.24.0
    • 10.09.21: - Fix creation of superuser
    • 07.08.21: - Update custom logo handling to support changes in v1.22.0
    • 11.07.21: - Rebase to Alpine 3.14.
    • 18.05.21: - Add linuxserver wheel index.
    • 11.01.21: - Add libffi-dev to allow building of python cryptography lib.
    • 19.07.20: - Rebasing to alpine 3.12, fixed 'ALLOWED_HOSTS' bug, now defaults to wildcard
    • 19.12.19: - Rebasing to alpine 3.11.
    • 31.10.19: - Add postgres client and fix config for CSRF.
    • 23.10.19: - Allow to create superuser
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.04.19: - Rebase to Alpine 3.9.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.02.19: - Adding mysql libs needed for using a database.
    • 11.10.18: - adding pipeline logic and multi arching release
    • 15.11.17: - git pull is now in Dockerfile so each tagged container contains the same code version
    • 17.10.17: - Fixed local_settings.py output
    • 27.09.17: - Initial Release.
    "},{"location":"images/docker-hedgedoc/","title":"hedgedoc","text":""},{"location":"images/docker-hedgedoc/#linuxserverhedgedoc","title":"linuxserver/hedgedoc","text":"

    HedgeDoc gives you access to all your files wherever you are.

    HedgeDoc is a real-time, multi-platform collaborative markdown note editor. This means that you can write notes with other people on your desktop, tablet or even on the phone. You can sign-in via multiple auth providers like Facebook, Twitter, GitHub and many more on the homepage.

    "},{"location":"images/docker-hedgedoc/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-hedgedoc/#application-setup","title":"Application Setup","text":"

    HedgeDoc web interface can be accessed http://${IP}:3000/, if you want to use a custom domain or anything besides port 3000 you will need to leverage their env settings for callbacks: (specifically for CMD_DOMAIN, CMD_PORT and CMD_URL_ADDPORT)

    Full list of HedgeDoc options

    For convience we provide a working example using Mysql as a backend in this document, if you do not wish to use our custom environment values or a Mysql database backend feel free to leverage any of the settings laid out in the link above.

    To run behind a reverse proxy we have a preconfigured config using docker networking included in our SWAG image and you can read how to use this in the Reverse Proxy Confs repository

    "},{"location":"images/docker-hedgedoc/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-hedgedoc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nhedgedoc:\nimage: lscr.io/linuxserver/hedgedoc:latest\ncontainer_name: hedgedoc\nenvironment:\n- PUID=1000\n- PGID=1000\n- DB_HOST=<hostname or ip>\n- DB_PORT=3306\n- DB_USER=hedgedoc\n- DB_PASS=<secret password>\n- DB_NAME=hedgedoc\n- TZ=Europe/London\n- CMD_DOMAIN=localhost\n- CMD_URL_ADDPORT=false #optional\n- CMD_PROTOCOL_USESSL=false #optional\n- CMD_PORT=3000 #optional\n- CMD_ALLOW_ORIGIN=['localhost'] #optional\nvolumes:\n- /path/to/appdata:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-hedgedoc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=hedgedoc \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e DB_HOST=<hostname or ip> \\\n-e DB_PORT=3306 \\\n-e DB_USER=hedgedoc \\\n-e DB_PASS=<secret password> \\\n-e DB_NAME=hedgedoc \\\n-e TZ=Europe/London \\\n-e CMD_DOMAIN=localhost \\\n-e CMD_URL_ADDPORT=false `#optional` \\\n-e CMD_PROTOCOL_USESSL=false `#optional` \\\n-e CMD_PORT=3000 `#optional` \\\n-e CMD_ALLOW_ORIGIN=['localhost'] `#optional` \\\n-p 3000:3000 \\\n-v /path/to/appdata:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/hedgedoc:latest\n
    "},{"location":"images/docker-hedgedoc/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-hedgedoc/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web gui port (internal port also needs to be changed if accessing at port other than 80, 443 and 3000)."},{"location":"images/docker-hedgedoc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST=<hostname or ip> Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=hedgedoc Database user DB_PASS=<secret password> Database password DB_NAME=hedgedoc Database name TZ=Europe/London Specify a timezone to use EG Europe/London. CMD_DOMAIN=localhost The address the gui will be accessed at (ie. 192.168.1.1 or hedgedoc.domain.com). CMD_URL_ADDPORT=false Set to true if using a port other than 80 or 443. CMD_PROTOCOL_USESSL=false Set to true if accessing over https via reverse proxy. CMD_PORT=3000 If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. CMD_PORT=5000) and change the port mapping accordingly (5000:5000). CMD_ALLOW_ORIGIN=['localhost'] Comma-separated list of allowed hostnames"},{"location":"images/docker-hedgedoc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config HedgeDoc config and configurable files"},{"location":"images/docker-hedgedoc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-hedgedoc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-hedgedoc/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-hedgedoc/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-hedgedoc/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-hedgedoc/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it hedgedoc /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hedgedoc
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hedgedoc
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hedgedoc:latest
    "},{"location":"images/docker-hedgedoc/#versions","title":"Versions","text":"
    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 10.04.22: - Use python3 to build node sqlite3.
    • 10.02.22: - Rebase to Alpine 3.15.
    • 09.02.22: - Add optional var CMD_PORT that is needed for accessing at port other than 80, 443 and 3000.
    • 09.12.21: - Add optional var CMD_PROTOCOL_USESSL that is needed for reverse proxy.
    • 07.12.21: - Rebase to ubuntu focal. Update to node 16. Make sure uploads are persistent.
    • 15.10.21: - Add required env var CMD_DOMAIN.
    • 05.05.21: - Remove symlinking some folders from config to /opt/hedgedoc/public.
    • 03.05.21: - Remove deprecated sequalizerc step.
    • 22.12.20: - Initial release
    "},{"location":"images/docker-heimdall/","title":"heimdall","text":""},{"location":"images/docker-heimdall/#linuxserverheimdall","title":"linuxserver/heimdall","text":"

    Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo.

    "},{"location":"images/docker-heimdall/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-heimdall/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Heimdall releases. development \u2705 Latest commit from the github 2.x branch."},{"location":"images/docker-heimdall/#application-setup","title":"Application Setup","text":"

    Access the web gui at http://SERVERIP:PORT

    "},{"location":"images/docker-heimdall/#adding-password-protection","title":"Adding password protection","text":"

    This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>. Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container."},{"location":"images/docker-heimdall/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-heimdall/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nheimdall:\nimage: lscr.io/linuxserver/heimdall:latest\ncontainer_name: heimdall\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-heimdall/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=heimdall \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-p 443:443 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/heimdall:latest\n
    "},{"location":"images/docker-heimdall/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-heimdall/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-heimdall/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-heimdall/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-heimdall/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-heimdall/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-heimdall/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-heimdall/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-heimdall/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-heimdall/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it heimdall /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f heimdall
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' heimdall
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/heimdall:latest
    "},{"location":"images/docker-heimdall/#versions","title":"Versions","text":"
    • 14.11.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 04.11.22: - Build commits to upstream branch 2.x for the development tag.
    • 13.03.21: - Make searchproviders.yaml user configurable.
    • 10.02.21: - Revert to alpine 3.12 as php 7.4 broke laravel.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 17.08.20: - Add php7-curl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.01.20: - Use nginx from baseimage.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 16.07.19: - Save laravel.log to /config/log/heimdall.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 01.04.19: - Fix permission detect logic.
    • 26.03.19: - Install Heimdall during container start to prevent delayed start due to overlayfs bug with recursive chown.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.03.19: - Clarify docker image tags in readme.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.18: - Generate random app key in .env for new installs.
    • 20.11.18: - Upgrade baseimage packages during build.
    • 04.11.18: - Add php7-zip.
    • 31.10.18: - Add queue service.
    • 17.10.18: - Symlink avatars folder.
    • 16.10.18: - Updated fastcgi_params for user login support.
    • 07.10.18: - Symlink .env rather than copy. It now resides under /config/www
    • 30.09.18: - Multi-arch image. Move .env to /config.
    • 05.09.18: - Rebase to alpine linux 3.8.
    • 06.03.18: - Use password protection if htpasswd is set. Existing users can delete their default site config at /config/nginx/site-confs/default.conf and restart the container, a new default site config with htpasswd support will be created in its place
    • 12.02.18: - Initial Release.
    "},{"location":"images/docker-homeassistant/","title":"homeassistant","text":""},{"location":"images/docker-homeassistant/#linuxserverhomeassistant","title":"linuxserver/homeassistant","text":"

    Home Assistant Core - Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.

    "},{"location":"images/docker-homeassistant/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-homeassistant/#application-setup","title":"Application Setup","text":"

    This image is based on Home Assistant Core.

    The Webui can be found at http://your-ip:8123. Follow the wizard to set up Home Assistant.

    "},{"location":"images/docker-homeassistant/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-homeassistant/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nhomeassistant:\nimage: lscr.io/linuxserver/homeassistant:latest\ncontainer_name: homeassistant\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 8123:8123 #optional\ndevices:\n- /path/to/device:/path/to/device #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-homeassistant/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=homeassistant \\\n--net=host \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8123:8123 `#optional` \\\n-v /path/to/data:/config \\\n--device /path/to/device:/path/to/device `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/homeassistant:latest\n
    "},{"location":"images/docker-homeassistant/#host-vs-bridge","title":"Host vs. Bridge","text":"

    Home Assistant can discover and automatically configure zeroconf/mDNS and UPnP devices on your network. In order for this to work you must create the container with --net=host.

    "},{"location":"images/docker-homeassistant/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-homeassistant/#ports-p","title":"Ports (-p)","text":"Parameter Function 8123 Application WebUI, only use this if you are not using host mode."},{"location":"images/docker-homeassistant/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Shares host networking with container. Required for some devices to be discovered by Home Assistant."},{"location":"images/docker-homeassistant/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify your TimeZone e.g. Europe/London."},{"location":"images/docker-homeassistant/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Home Assistant config storage path."},{"location":"images/docker-homeassistant/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /path/to/device For passing through USB, serial or gpio devices."},{"location":"images/docker-homeassistant/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-homeassistant/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-homeassistant/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-homeassistant/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-homeassistant/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-homeassistant/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it homeassistant /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f homeassistant
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' homeassistant
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/homeassistant:latest
    "},{"location":"images/docker-homeassistant/#versions","title":"Versions","text":"
    • 16.11.22: - Fix the dep conflict for google calendar.
    • 23.09.22: - Migrate to s6v3.
    • 29.07.22: - Improve usb device permission fix.
    • 07.07.22: - Rebase to alpine 3.16, switch to cp310 wheels.
    • 07.05.22: - Build matplotlib with the same Numpy version as HA req.
    • 31.03.22: - Install pycups.
    • 07.03.22: - Install PySwitchbot.
    • 02.03.22: - Update pip and use legacy resolver, clean up temp python files, reduce image size.
    • 04.02.22: - Always compile grpcio on arm32v7 due to pypi pushing a glibc only wheel.
    • 12.12.21: - Use the new build.yaml to determine HA base version.
    • 25.09.21: - Use the new lsio homeassistant wheel repo, instead of the HA wheels.
    • 13.09.21: - Build psycopg locally as the HA provided wheel does not seem to work properly.
    • 13.09.21: - Fix setcap in service. Build CISO8601 locally as the HA provided wheel does not seem to work properly.
    • 12.09.21: - Rebase to alpine 3.14. Build on native armhf.
    • 09.08.21: - Fixed broken build caused by missing dependency.
    • 01.07.21: - Remove HACS dependencies as it caused a crash in Home-assistant.
    • 25.02.21: - Add python dependencies from homeassistant base image.
    • 07.02.21: - Fix building from the wrong requirement file. Add ssh client & external DB libs.
    • 06.02.21: - Add iputils so ping works as non root user.
    • 30.01.21: - Initial Release.
    "},{"location":"images/docker-htpcmanager/","title":"htpcmanager","text":""},{"location":"images/docker-htpcmanager/#linuxserverhtpcmanager","title":"linuxserver/htpcmanager","text":"

    Htpcmanager is a front end for many htpc related applications.

    "},{"location":"images/docker-htpcmanager/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-htpcmanager/#application-setup","title":"Application Setup","text":"

    The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.

    "},{"location":"images/docker-htpcmanager/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-htpcmanager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nhtpcmanager:\nimage: lscr.io/linuxserver/htpcmanager:latest\ncontainer_name: htpcmanager\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 8085:8085\nrestart: unless-stopped\n
    "},{"location":"images/docker-htpcmanager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=htpcmanager \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8085:8085 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/htpcmanager:latest\n
    "},{"location":"images/docker-htpcmanager/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-htpcmanager/#ports-p","title":"Ports (-p)","text":"Parameter Function 8085 Application WebUI"},{"location":"images/docker-htpcmanager/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-htpcmanager/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"images/docker-htpcmanager/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-htpcmanager/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-htpcmanager/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-htpcmanager/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-htpcmanager/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-htpcmanager/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it htpcmanager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f htpcmanager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' htpcmanager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/htpcmanager:latest
    "},{"location":"images/docker-htpcmanager/#versions","title":"Versions","text":"
    • 24.08.22: - Rebase to alpine 3.15, use linuxserver.io wheel repo.
    • 08.04.21: - Fix build.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Rebase to alpine 3.12, python3, change upstream project
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 26.09.16: - Add back cherrypy after removal from baseimage.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 14.01.15: - Remove hardcoded loglevel from the run command, set in webui
    • 19.09.15: - Initial Release.
    "},{"location":"images/docker-hydra/","title":"hydra","text":""},{"location":"images/docker-hydra/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-hydra/#linuxserverhydra","title":"linuxserver/hydra","text":"

    Hydra is a meta search for NZB indexers and the \"spiritual successor\" to NZBmegasearcH. It provides easy access to a number of raw and newznab based indexers.

    "},{"location":"images/docker-hydra/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-hydra/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-hydra/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nhydra:\nimage: lscr.io/linuxserver/hydra\ncontainer_name: hydra\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <nzb download>:/downloads\nports:\n- 5075:5075\nrestart: unless-stopped\n
    "},{"location":"images/docker-hydra/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=hydra \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 5075:5075 \\\n  -v <path to data>:/config \\\n  -v <nzb download>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/hydra\n
    "},{"location":"images/docker-hydra/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-hydra/#ports-p","title":"Ports (-p)","text":"Parameter Function 5075 WebUI"},{"location":"images/docker-hydra/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-hydra/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where hydra should store config files. /downloads NZB download folder."},{"location":"images/docker-hydra/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-hydra/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-hydra/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-hydra/#application-setup","title":"Application Setup","text":"

    THIS IMAGE HAS BEEN DEPRECATED.

    Please use linuxserver/nzbhydra2 instead.

    The web interface is at <your ip>:5075 , to set up indexers and connections to your nzb download applications.

    "},{"location":"images/docker-hydra/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-hydra/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it hydra /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hydra
    "},{"location":"images/docker-hydra/#versions","title":"Versions","text":"
    • 04.11.19: - Deprecated. Please use linuxserver/nzbhydra2 instead.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 12.12.17: - Rebase to alpine 3.7.
    • 20.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 07.11.16: - Move git clone internal to the container,point config, database and log to use same locations for existing users.
    • 14.10.16: - Add version layer information.
    • 09.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 25.01.16: - Initial Release.
    "},{"location":"images/docker-hydra2/","title":"hydra2","text":""},{"location":"images/docker-hydra2/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We will continue releases with a new image under the correct name: linuxserver/nzbhydra2.

    "},{"location":"images/docker-hydra2/#linuxserverhydra2","title":"linuxserver/hydra2","text":"

    Hydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/hydra2:v2.10.2-ls49

    "},{"location":"images/docker-hydra2/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-hydra2/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description latest Stable releases dev Prereleases from their GitHub"},{"location":"images/docker-hydra2/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-hydra2/#docker","title":"docker","text":"
    docker create \\\n  --name=hydra2 \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 5076:5076 \\\n  -v <path to data>:/config \\\n  -v <nzb download>:/downloads \\\n  --restart unless-stopped \\\n  linuxserver/hydra2\n
    "},{"location":"images/docker-hydra2/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nhydra2:\nimage: linuxserver/hydra2\ncontainer_name: hydra2\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <nzb download>:/downloads\nports:\n- 5076:5076\nrestart: unless-stopped\n
    "},{"location":"images/docker-hydra2/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-hydra2/#ports-p","title":"Ports (-p)","text":"Parameter Function 5076 WebUI"},{"location":"images/docker-hydra2/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-hydra2/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where hydra2 should store config files. /downloads NZB download folder."},{"location":"images/docker-hydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-hydra2/#application-setup","title":"Application Setup","text":"

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    "},{"location":"images/docker-hydra2/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    "},{"location":"images/docker-hydra2/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it hydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f hydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/hydra2
    "},{"location":"images/docker-hydra2/#versions","title":"Versions","text":"
    • 19.04.20: - Deprecated. New repo at linuxserver/docker-nzbhydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    "},{"location":"images/docker-ipfs/","title":"ipfs","text":""},{"location":"images/docker-ipfs/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official IPFS container here: https://hub.docker.com/r/ipfs/go-ipfs When this project started the web interface was not integrated well with the default IPFS server. Now it is great and well maintained, hosting it on a static webserver does not make much sense anymore.

    "},{"location":"images/docker-ipfs/#linuxserveripfs","title":"linuxserver/ipfs","text":"

    Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.

    "},{"location":"images/docker-ipfs/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-ipfs/#application-setup","title":"Application Setup","text":"

    In order to push files beyond your local gateway you have to make sure port 4001 is forwarded to the internet. This is required for IPFS peers to reach in and grab your files so public gateways can serve them.

    Access the webui at http://localhost , if not using localhost scroll to the bottom of the page and set the API Address setting to IE http://192.168.1.10:5001 , from there you can upload and manage files you push to IPFS. Your gateway to access IPFS files is http://localhost:8080/ipfs/YOUR-FILE-HASH-HERE . You can also simply use public IPFS gateways like: * Cloudflare - https://cloudflare-ipfs.com/ipfs/YOUR-FILE-HASH-HERE * IPFS.io - https://ipfs.io/ipfs/YOUR-FILE-HASH-HERE * Eternum.io - https://ipfs.eternum.io/ipfs/YOUR-FILE-HASH-HERE

    Cloudflare is a solid option as they actually edge cache the files on their CDN so even if your node pinning the item goes down for periods of time their cache will last up to a month.

    For more on using IPFS please read the docs here

    "},{"location":"images/docker-ipfs/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-ipfs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nipfs:\nimage: lscr.io/linuxserver/ipfs\ncontainer_name: ipfs\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 80:80\n- 4001:4001\n- 5001:5001\n- 8080:8080\n- 443:443 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-ipfs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=ipfs \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-p 4001:4001 \\\n-p 5001:5001 \\\n-p 8080:8080 \\\n-p 443:443 `#optional` \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ipfs\n
    "},{"location":"images/docker-ipfs/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-ipfs/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 The port for the IPFS web UI 4001 Peering port, this is the only port you should expose to the internet 5001 API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on 8080 Gateway Port, actually serves IPFS content 443 HTTPS port for web UI"},{"location":"images/docker-ipfs/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-ipfs/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config IPFS storage and config files/logs"},{"location":"images/docker-ipfs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ipfs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-ipfs/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-ipfs/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-ipfs/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-ipfs/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it ipfs /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ipfs
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ipfs
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ipfs
    "},{"location":"images/docker-ipfs/#versions","title":"Versions","text":"
    • 02.02.22: - Deprecate.
    • 19.09.21: - Build webui from source. Update code formatting. Rebase to Alpine 3.14.
    • 01.04.21: - Add migration bins to image to support upgrades.
    • 24.02.20: - Rebase to Alpine 3.13.
    • 09.07.19: - Initial version.
    "},{"location":"images/docker-jackett/","title":"jackett","text":""},{"location":"images/docker-jackett/#linuxserverjackett","title":"linuxserver/jackett","text":"

    Jackett works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.

    "},{"location":"images/docker-jackett/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-jackett/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Jackett Releases development \u2705 Latest Jackett Releases"},{"location":"images/docker-jackett/#application-setup","title":"Application Setup","text":"

    The web interface is at <your-ip>:9117 , configure various trackers and connections to other apps there. More info at Jackett.

    Disable autoupdates in the webui to prevent jackett crashing, the image is refreshed when new versions are released.

    "},{"location":"images/docker-jackett/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-jackett/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\njackett:\nimage: lscr.io/linuxserver/jackett:latest\ncontainer_name: jackett\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- AUTO_UPDATE=true #optional\n- RUN_OPTS=<run options here> #optional\nvolumes:\n- <path to data>:/config\n- <path to blackhole>:/downloads\nports:\n- 9117:9117\nrestart: unless-stopped\n
    "},{"location":"images/docker-jackett/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=jackett \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e AUTO_UPDATE=true `#optional` \\\n-e RUN_OPTS=<run options here> `#optional` \\\n-p 9117:9117 \\\n-v <path to data>:/config \\\n-v <path to blackhole>:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/jackett:latest\n
    "},{"location":"images/docker-jackett/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-jackett/#ports-p","title":"Ports (-p)","text":"Parameter Function 9117 WebUI"},{"location":"images/docker-jackett/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. AUTO_UPDATE=true Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default) RUN_OPTS=<run options here> Optionally specify additional arguments to be passed."},{"location":"images/docker-jackett/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Jackett should store its config file. /downloads Path to torrent blackhole."},{"location":"images/docker-jackett/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-jackett/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-jackett/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-jackett/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-jackett/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-jackett/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it jackett /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jackett
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jackett
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jackett:latest
    "},{"location":"images/docker-jackett/#versions","title":"Versions","text":"
    • 10.05.22: - Rebase to Ubuntu Focal.
    • 24.05.20: - Allow user to optionally enable auto updates.
    • 31.12.19: - Remove agressive startup chowning.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Switch to net-core builds of jackett, not dependant on mono and smaller images.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.18: - Ensure root ownership of Jackett files.
    • 13.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, ubuntu xenial based.
    • 09.02.17: - Rebase to alpine 3.5.
    • 29.10.16: - Call python2 from edge main to satisfy new mono dependency.
    • 14.10.16: - Add version layer information.
    • 22.09.16: - Remove autoupdate, tidy up Dockerfile.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 06.08.16: - Rebase to alpine linux for smaller image.
    • 25.01.16: - Initial Release.
    "},{"location":"images/docker-jellyfin/","title":"jellyfin","text":""},{"location":"images/docker-jellyfin/#linuxserverjellyfin","title":"linuxserver/jellyfin","text":"

    Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.

    "},{"location":"images/docker-jellyfin/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-jellyfin/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Jellyfin releases nightly \u2705 Nightly Jellyfin releases"},{"location":"images/docker-jellyfin/#application-setup","title":"Application Setup","text":"

    Webui can be found at http://<your-ip>:8096

    More information can be found on the official documentation here.

    "},{"location":"images/docker-jellyfin/#hardware-acceleration","title":"Hardware Acceleration","text":""},{"location":"images/docker-jellyfin/#intel","title":"Intel","text":"

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    "},{"location":"images/docker-jellyfin/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the jellyfin docker container.

    "},{"location":"images/docker-jellyfin/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"

    Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

    --device=/dev/vcsm:/dev/vcsm\n--device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n
    "},{"location":"images/docker-jellyfin/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"

    Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

    --device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n
    "},{"location":"images/docker-jellyfin/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-jellyfin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\njellyfin:\nimage: lscr.io/linuxserver/jellyfin:latest\ncontainer_name: jellyfin\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- JELLYFIN_PublishedServerUrl=192.168.0.5 #optional\nvolumes:\n- /path/to/library:/config\n- /path/to/tvseries:/data/tvshows\n- /path/to/movies:/data/movies\nports:\n- 8096:8096\n- 8920:8920 #optional\n- 7359:7359/udp #optional\n- 1900:1900/udp #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-jellyfin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=jellyfin \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e JELLYFIN_PublishedServerUrl=192.168.0.5 `#optional` \\\n-p 8096:8096 \\\n-p 8920:8920 `#optional` \\\n-p 7359:7359/udp `#optional` \\\n-p 1900:1900/udp `#optional` \\\n-v /path/to/library:/config \\\n-v /path/to/tvseries:/data/tvshows \\\n-v /path/to/movies:/data/movies \\\n--restart unless-stopped \\\nlscr.io/linuxserver/jellyfin:latest\n
    "},{"location":"images/docker-jellyfin/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-jellyfin/#ports-p","title":"Ports (-p)","text":"Parameter Function 8096 Http webUI. 8920 Optional - Https webUI (you need to set up your own certificate). 7359/udp Optional - Allows clients to discover Jellyfin on the local network. 1900/udp Optional - Service discovery used by DNLA and clients."},{"location":"images/docker-jellyfin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London). JELLYFIN_PublishedServerUrl=192.168.0.5 Set the autodiscovery response domain or IP address."},{"location":"images/docker-jellyfin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Jellyfin data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc."},{"location":"images/docker-jellyfin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-jellyfin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-jellyfin/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-jellyfin/#optional-parameters","title":"Optional Parameters","text":"

    The official documentation for ports has additional ports that can provide auto discovery.

    Service Discovery (1900/udp) - Since client auto-discover would break if this option were configurable, you cannot change this in the settings at this time. DLNA also uses this port and is required to be in the local subnet.

    Client Discovery (7359/udp) - Allows clients to discover Jellyfin on the local network. A broadcast message to this port with \"Who is Jellyfin Server?\" will get a JSON response that includes the server address, ID, and name.

      -p 7359:7359/udp \\\n  -p 1900:1900/udp \\\n

    The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image.

    "},{"location":"images/docker-jellyfin/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-jellyfin/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-jellyfin/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it jellyfin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f jellyfin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jellyfin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jellyfin:latest
    "},{"location":"images/docker-jellyfin/#versions","title":"Versions","text":"
    • 07.12.22: - Rebase master to Jammy, migrate to s6v3.
    • 11.06.22: - Switch to upstream repo's ffmpeg5 build.
    • 05.01.22: - Specify Intel iHD driver versions to avoid mismatched libva errors.
    • 25.12.21: - Fix video device group perms error message.
    • 10.12.21: - Rework readme, disable template sync.
    • 22.09.21: - Pull only the server, web and ffmpeg packages instead of the wrapper.
    • 23.06.21: - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the bionic tag.
    • 21.05.21: - Add nvidia.icd file to fix missing tonemapping using Nvidia HW.
    • 20.01.21: - Add Jellyfin Binary Environmentals
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 23.11.20: - Rebase to Focal, branch off Bionic.
    • 22.07.20: - Ingest releases from Jellyfin repo.
    • 28.04.20: - Replace MMAL/OMX dependency device /dev/vc-mem with /dev/vcsm as the former was not sufficient for raspbian.
    • 11.04.20: - Enable hw decode (mmal) on Raspberry Pi, update readme instructions, add donation info, create missing default transcodes folder.
    • 11.03.20: - Add Pi V4L2 support, remove optional transcode mapping (location is selected in the gui, defaults to path under /config).
    • 30.01.20: - Add nightly tag.
    • 09.01.20: - Add Pi OpenMax support.
    • 02.10.19: - Improve permission fixing for render & dvb devices.
    • 31.07.19: - Add AMD drivers for vaapi support on x86.
    • 13.06.19: - Add Intel drivers for vaapi support on x86.
    • 07.06.19: - Initial release.
    "},{"location":"images/docker-jenkins-builder/","title":"jenkins-builder","text":""},{"location":"images/docker-jenkins-builder/#linuxserverjenkins-builder","title":"linuxserver/jenkins-builder","text":"

    Expects to run as part of the LSIO CI process. Not for public consumption.

    "},{"location":"images/docker-jenkins-builder/#running-against-remote-project","title":"Running against remote project","text":"
    docker run --rm \\\n-e CONTAINER_NAME=${CONTAINER_NAME} \\\n-v ${TEMPDIR}:/ansible/jenkins \\\nlscr.io/linuxserver/jenkins-builder:latest\n
    "},{"location":"images/docker-jenkins-builder/#running-against-local-project","title":"Running against local project","text":"

    If you need to test functionality just navigate to the folder with the jenkins-vars.yml and run:

    docker pull lscr.io/linuxserver/jenkins-builder:latest && \\\ndocker run --rm \\\n-v $(pwd):/tmp \\\n-e LOCAL=true \\\n-e PUID=$(id -u) -e PGID=$(id -g) \\\nlscr.io/linuxserver/jenkins-builder:latest && \\\nrm -rf .jenkins-external\n

    Newly generated files (including README.md, Jenkinsfile, issue templates, etc.) will overwrite the existing files in your current working directory.

    "},{"location":"images/docker-jenkins-builder/#building-locally","title":"Building locally","text":"

    If you want to make local modifications to these images for development purposes or just to customize the logic:

    git clone https://github.com/linuxserver/docker-jenkins-builder.git\ncd docker-jenkins-builder\ndocker build \\\n--no-cache \\\n--pull \\\n-t lscr.io/linuxserver/jenkins-builder:latest .\n

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    "},{"location":"images/docker-jenkins-builder/#versions","title":"Versions","text":"

    The following line is only in this repo for loop testing:

    • { date: \"01.01.50:\", desc: \"I am the release message for this internal repo.\" }
    "},{"location":"images/docker-kanzi/","title":"kanzi","text":""},{"location":"images/docker-kanzi/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-kanzi/#linuxserverkanzi","title":"linuxserver/kanzi","text":"

    Kanzi, formerly titled Kodi-Alexa, this custom skill is the ultimate voice remote control for navigating Kodi. It can do anything you can think of (100+ intents). This container also contains lexigram-cli to setup Kanzi with an Amazon Developer Account and automatically deploy it to Amazon.

    "},{"location":"images/docker-kanzi/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-kanzi/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-kanzi/#initial-setup","title":"Initial setup","text":"
    • Once you start the container for the first time, you need to perform some steps before use.
    • Create an Amazon Developer Account here.
    • Open a terminal in the /config directory of the docker container docker exec -itw /config kanzi bash
    • Enter lexigram login --no-browser true to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter.
    • Edit the file kodi.config according to your local setup and this will be used by the included gunicorn server to respond to requests.
    • Restart the container to automatically deploy the Kanzi skill.
    • Reverse proxy this container with our LetsEncrypt container which contains preconfigured templates for reverse proxying the Kanzi container on either a subdomain or subfolder utilising Docker custom networking. Alternatively, if you already have an Nginx reverse proxy set up, you can use one of these location blocks to reverse proxy Kanzi to a subfolder or subdomain respectively.

    Subfolder

    location /kanzi {\n  rewrite           ^/kanzi/(.*)  /$1  break;\n  proxy_pass         https://$IP-ADDRESS:8000;\n  proxy_redirect     https://$IP-ADDRESS:8000 /kanzi;\n  proxy_set_header   Host $host;\n  proxy_set_header   X-Real-IP $remote_addr;\n  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;\n  proxy_set_header   X-Forwarded-Server $host;\n  proxy_set_header   X-Forwarded-Host $server_name;\n}\n
    Subdomain
      location / {\n  proxy_pass         https://$IP-ADDRESS:8000;\n  proxy_set_header   Host $host;\n  proxy_set_header   X-Real-IP $remote_addr;\n  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;\n  proxy_set_header   X-Forwarded-Server $host;\n  proxy_set_header   X-Forwarded-Host $server_name;\n}\n

    "},{"location":"images/docker-kanzi/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-kanzi/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-kanzi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nkanzi:\nimage: lscr.io/linuxserver/kanzi:latest\ncontainer_name: kanzi\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- INVOCATION_NAME=kanzi\n- URL_ENDPOINT=https://server.com/kanzi/\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-kanzi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=kanzi \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e INVOCATION_NAME=kanzi \\\n-e URL_ENDPOINT=https://server.com/kanzi/ \\\n-p 8000:8000 \\\n-v </path/to/appdata/config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/kanzi:latest\n
    "},{"location":"images/docker-kanzi/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-kanzi/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Application Port"},{"location":"images/docker-kanzi/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INVOCATION_NAME=kanzi Specify an invocation name for this skill, use either kanzi or kod. URL_ENDPOINT=https://server.com/kanzi/ Specify the URL at which the webserver is reachable either https://kanzi.server.com/ or https://server.com/kanzi/ Note the trailing slash MUST be included."},{"location":"images/docker-kanzi/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"images/docker-kanzi/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-kanzi/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-kanzi/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-kanzi/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-kanzi/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-kanzi/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it kanzi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kanzi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kanzi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kanzi:latest
    "},{"location":"images/docker-kanzi/#versions","title":"Versions","text":"
    • 20.06.22: - Deprecate image.
    • 13.04.19: - Initial Release.
    "},{"location":"images/docker-kasm/","title":"kasm","text":""},{"location":"images/docker-kasm/#linuxserverkasm","title":"linuxserver/kasm","text":"

    Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services. Kasm uses devops-enabled Containerized Desktop Infrastructure (CDI) to create on-demand, disposable, docker containers that are accessible via web browser. Example use-cases include Remote Browser Isolation (RBI), Data Loss Prevention (DLP), Desktop as a Service (DaaS), Secure Remote Access Services (RAS), and Open Source Intelligence (OSINT) collections.

    The rendering of the graphical-based containers is powered by the open-source project KasmVNC.

    "},{"location":"images/docker-kasm/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-kasm/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Kasm releases develop \u2705 Tip of develop"},{"location":"images/docker-kasm/#application-setup","title":"Application Setup","text":"

    This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000.

    Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443

    Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path

    Access the installation wizard at https://your ip:3000 and follow the instructions there. Once setup is complete access https://your ip:443 and login with the credentials you entered during setup. The default users are:

    • admin@kasm.local
    • user@kasm.local

    Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.

    "},{"location":"images/docker-kasm/#gpu-support","title":"GPU Support","text":"

    During installation an option will be presented to force all Workspace containers to mount in and use a specific GPU. If using an NVIDIA GPU you will need to pass -e NVIDIA_VISIBLE_DEVICES=all or --gpus all and have the NVIDIA Container Runtime installed on the host. Also if using NVIDIA, Kasm Workspaces has native NVIDIA support so you can optionally opt to simply use that instead of he manual override during installation.

    "},{"location":"images/docker-kasm/#gamepad-support","title":"Gamepad support","text":"

    In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data. Please see HERE for instructions on enabling gamepad support.

    "},{"location":"images/docker-kasm/#persistant-profiles","title":"Persistant profiles","text":"

    In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles. From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/, more infomation can be found HERE.

    "},{"location":"images/docker-kasm/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-kasm/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-kasm/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nkasm:\nimage: lscr.io/linuxserver/kasm:latest\ncontainer_name: kasm\nprivileged: true\nenvironment:\n- KASM_PORT=443\n- TZ=Europe/London\n- DOCKER_HUB_USERNAME=USER #optional\n- DOCKER_HUB_PASSWORD=PASS #optional\nvolumes:\n- /path/to/data:/opt\n- /path/to/profiles:/profiles #optional\n- /dev/input:/dev/input #optional\n- /run/udev/data:/run/udev/data #optional\nports:\n- 3000:3000\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-kasm/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=kasm \\\n--privileged \\\n-e KASM_PORT=443 \\\n-e TZ=Europe/London \\\n-e DOCKER_HUB_USERNAME=USER `#optional` \\\n-e DOCKER_HUB_PASSWORD=PASS `#optional` \\\n-p 3000:3000 \\\n-p 443:443 \\\n-v /path/to/data:/opt \\\n-v /path/to/profiles:/profiles `#optional` \\\n-v /dev/input:/dev/input `#optional` \\\n-v /run/udev/data:/run/udev/data `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/kasm:latest\n
    "},{"location":"images/docker-kasm/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-kasm/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Kasm Installation wizard. (https) 443 Kasm Workspaces interface. (https)"},{"location":"images/docker-kasm/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function KASM_PORT=443 Specify the port you bind to the outside for Kasm Workspaces. TZ=Europe/London Specify a timezone to use EG Europe/London. DOCKER_HUB_USERNAME=USER Optionally specify a DockerHub Username to pull private images. DOCKER_HUB_PASSWORD=PASS Optionally specify a DockerHub password to pull private images."},{"location":"images/docker-kasm/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /opt Docker and installation storage. /profiles Optionally specify a path for persistent profile storage. /dev/input Optional for gamepad support. /run/udev/data Optional for gamepad support."},{"location":"images/docker-kasm/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-kasm/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-kasm/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-kasm/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-kasm/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it kasm /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kasm
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kasm
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kasm:latest
    "},{"location":"images/docker-kasm/#versions","title":"Versions","text":"
    • 05.11.22: - Rebase to Jammy, add support for GPUs, add support for Gamepads.
    • 23.09.22: - Migrate to s6v3.
    • 02.07.22: - Initial Release.
    "},{"location":"images/docker-kdenlive/","title":"kdenlive","text":""},{"location":"images/docker-kdenlive/#linuxserverkdenlive","title":"linuxserver/kdenlive","text":"

    Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

    "},{"location":"images/docker-kdenlive/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-kdenlive/#application-setup","title":"Application Setup","text":"

    The application can be accessed at: * http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

    "},{"location":"images/docker-kdenlive/#hardware-acceleration-x86_64-only","title":"Hardware Acceleration (x86_64 only)","text":"

    In order to perform hardware transcoding you will need to mount a video device into the container. Some of the default hardware rendering/transcode profiles will point to devices in /dev/dri for vaapi_device. Make sure the profile you are using points to the correct device in the container. IE if you have intel integrated graphics along with an Nvdia or AMD video card you might have renderD128, renderD129, etc. To check which device is which use vainfo from inside the container: (right click the desktop and open xterm)

    vainfo --display drm --device /dev/dri/renderD128\n
    "},{"location":"images/docker-kdenlive/#intelatiamd","title":"Intel/ATI/AMD","text":"

    To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

    --device=/dev/dri:/dev/dri\n
    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    "},{"location":"images/docker-kdenlive/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

    "},{"location":"images/docker-kdenlive/#keyboard-layouts","title":"Keyboard Layouts","text":"

    This should match the layout on the computer you are accessing the container from. The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

    "},{"location":"images/docker-kdenlive/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-kdenlive/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nkdenlive:\nimage: lscr.io/linuxserver/kdenlive:latest\ncontainer_name: kdenlive\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SUBFOLDER=/ #optional\n- KEYBOARD=en-us-qwerty #optional\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\ndevices:\n- /dev/dri:/dev/dri #optional\nshm_size: \"1gb\" #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-kdenlive/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=kdenlive \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SUBFOLDER=/ `#optional` \\\n-e KEYBOARD=en-us-qwerty `#optional` \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--device /dev/dri:/dev/dri `#optional` \\\n--shm-size=\"1gb\" `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/kdenlive:latest\n
    "},{"location":"images/docker-kdenlive/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-kdenlive/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Kdenlive desktop gui"},{"location":"images/docker-kdenlive/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options."},{"location":"images/docker-kdenlive/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-kdenlive/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only)"},{"location":"images/docker-kdenlive/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This might be needed to prevent crashing --security-opt seccomp=unconfined For Docker Engine only, this may be required depending on your Docker and storage configuration."},{"location":"images/docker-kdenlive/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-kdenlive/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-kdenlive/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-kdenlive/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-kdenlive/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it kdenlive /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f kdenlive
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kdenlive
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kdenlive:latest
    "},{"location":"images/docker-kdenlive/#versions","title":"Versions","text":"
    • 16.09.22: - Migrate to s6v3.
    • 09.03.22: - Update seccomp explanation.
    • 07.03.22: - Initial release.
    "},{"location":"images/docker-lazylibrarian/","title":"lazylibrarian","text":""},{"location":"images/docker-lazylibrarian/#linuxserverlazylibrarian","title":"linuxserver/lazylibrarian","text":"

    Lazylibrarian is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. This container is based on the DobyTang fork.

    "},{"location":"images/docker-lazylibrarian/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-lazylibrarian/#application-setup","title":"Application Setup","text":"

    Access the webui at http://<your-ip>:5299/home, for more information check out Lazylibrarian.

    "},{"location":"images/docker-lazylibrarian/#calibredb-import","title":"Calibredb import","text":"

    64bit only We have implemented the optional ability to pull in the dependencies to enable the Calibredb import program:, this means if you don't require this feature the container isn't uneccessarily bloated but should you require it, it is easily available. This optional layer will be rebuilt automatically on our CI pipeline upon new Calibre releases so you can stay up to date. To use this option add the optional environmental variable as detailed in the docker-mods section to pull an addition docker layer to enable ebook conversion and then in the LazyLibrarian config page (Processing:Calibredb import program:) set the path to converter tool to /usr/bin/calibredb

    "},{"location":"images/docker-lazylibrarian/#ffmpeg","title":"ffmpeg","text":"

    By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS environment variable you can install ffmpeg into your container on startup. This allows you to use the audiobook conversion features of LazyLibrarian. You can enable it in the Web UI under Settings > Processing > External Programs by setting the ffmpeg path to ffmpeg.

    "},{"location":"images/docker-lazylibrarian/#media-folders","title":"Media folders","text":"

    We have set /books as optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional path if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    "},{"location":"images/docker-lazylibrarian/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-lazylibrarian/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nlazylibrarian:\nimage: lscr.io/linuxserver/lazylibrarian:latest\ncontainer_name: lazylibrarian\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional\nvolumes:\n- /path/to/data:/config\n- /path/to/downloads/:/downloads\n- /path/to/data/:/books #optional\nports:\n- 5299:5299\nrestart: unless-stopped\n
    "},{"location":"images/docker-lazylibrarian/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=lazylibrarian \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg `#optional` \\\n-p 5299:5299 \\\n-v /path/to/data:/config \\\n-v /path/to/downloads/:/downloads \\\n-v /path/to/data/:/books `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/lazylibrarian:latest\n
    "},{"location":"images/docker-lazylibrarian/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-lazylibrarian/#ports-p","title":"Ports (-p)","text":"Parameter Function 5299 The port for the LazyLibrarian webinterface"},{"location":"images/docker-lazylibrarian/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London DOCKER_MODS=linuxserver/calibre-web:calibre|linuxserver/mods:lazylibrarian-ffmpeg Allows additional functionality to be added, e.g. the Calibredb import program (optional, more info below)"},{"location":"images/docker-lazylibrarian/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config LazyLibrarian config /downloads Download location /books Books location"},{"location":"images/docker-lazylibrarian/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lazylibrarian/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-lazylibrarian/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-lazylibrarian/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-lazylibrarian/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-lazylibrarian/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it lazylibrarian /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lazylibrarian
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lazylibrarian
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lazylibrarian:latest
    "},{"location":"images/docker-lazylibrarian/#versions","title":"Versions","text":"
    • 07.12.22: - Rebase to Ubuntu Jammy, migrate to s6v3. Use pyproject.toml for deps. Build unrar from source.
    • 27.09.22: - Switch to Levenshtein, add cmake as build dep on armhf.
    • 07.05.22: - Rebase to Ubuntu Focal.
    • 22.05.21: - Make the paths clearer to the user, remove optional volume.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.10.19: - Changed gitlab download link.
    • 23.10.19: - Add python module Pillow.
    • 31.07.19: - Add pyopenssl, remove git dependency during build time.
    • 09.07.19: - Rebase to Ubuntu Bionic, enables Calibre docker mod.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 05.03.19: - Added apprise python package.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 10.12.18: - Moved to Pipeline Building
    • 16.08.18: - Rebase to alpine 3.8
    • 05.01.18: - Deprecate cpu_core routine lack of scaling
    • 12.12.17: - Rebase to alpine 3.7
    • 21.07.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 30.01.17: - Compile libunrar.so to allow reading of .cbr format files
    • 12.01.17: - Add ghostscript package, allows magazine covers to be created etc
    • 14.10.16: - Add version layer information
    • 03.10.16: - Fix non-persistent settings and make log folder
    • 28.09.16: - Inital Release
    "},{"location":"images/docker-ldap-auth/","title":"ldap-auth","text":""},{"location":"images/docker-ldap-auth/#linuxserverldap-auth","title":"linuxserver/ldap-auth","text":"

    Ldap-auth software is for authenticating users who request protected resources from servers proxied by nginx. It includes a daemon (ldap-auth) that communicates with an authentication server, and a webserver daemon that generates an authentication cookie based on the user\u2019s credentials. The daemons are written in Python for use with a Lightweight Directory Access Protocol (LDAP) authentication server (OpenLDAP or Microsoft Windows Active Directory 2003 and 2012).

    "},{"location":"images/docker-ldap-auth/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ldap-auth/#application-setup","title":"Application Setup","text":"
    • This container itself does not have any settings and it relies on the pertinent information passed through in http headers of incoming requests. Make sure that your webserver is set up with the right config.
    • Here's a sample config: nginx-ldap-auth.conf.
    • Unlike the upstream project, this image encodes the cookie information with fernet, using a randomly generated key during container creation (or optionally user defined).
    • Also unlike the upstream project, this image serves the login page at /ldaplogin (as well as /login) to prevent clashes with reverse proxied apps that may also use /login for their internal auth.
    "},{"location":"images/docker-ldap-auth/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-ldap-auth/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nldap-auth:\nimage: lscr.io/linuxserver/ldap-auth:latest\ncontainer_name: ldap-auth\nenvironment:\n- TZ=Europe/London\n- FERNETKEY= #optional\n- CERTFILE= #optional\n- KEYFILE= #optional\nports:\n- 8888:8888\n- 9000:9000\nrestart: unless-stopped\n
    "},{"location":"images/docker-ldap-auth/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=ldap-auth \\\n-e TZ=Europe/London \\\n-e FERNETKEY= `#optional` \\\n-e CERTFILE= `#optional` \\\n-e KEYFILE= `#optional` \\\n-p 8888:8888 \\\n-p 9000:9000 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ldap-auth:latest\n
    "},{"location":"images/docker-ldap-auth/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-ldap-auth/#ports-p","title":"Ports (-p)","text":"Parameter Function 8888 the port for ldap auth daemon 9000 the port for ldap login page"},{"location":"images/docker-ldap-auth/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function TZ=Europe/London Specify a timezone to use EG Europe/London FERNETKEY= Optionally define a custom fernet key, has to be base64-encoded 32-byte (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications) CERTFILE= Point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon KEYFILE= Point this to the private key file, matching the certificate file referred to in CERTFILE"},{"location":"images/docker-ldap-auth/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-ldap-auth/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ldap-auth/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-ldap-auth/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-ldap-auth/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-ldap-auth/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it ldap-auth /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ldap-auth
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ldap-auth
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ldap-auth:latest
    "},{"location":"images/docker-ldap-auth/#versions","title":"Versions","text":"
    • 19.09.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 14.05.21: - Add linuxserver wheel index.
    • 12.02.21: - Clean up cargo/rust cache.
    • 10.02.21: - Rebasing to alpine 3.13.
    • 08.09.20: - Set form action correctly.
    • 30.07.20: - Fix bug related to unset optional CERTFILE and KEYFILE vars.
    • 27.07.20: - Add support for HTTP over SSL (HTTPS).
    • 21.07.20: - Add support for optional user defined fernet key.
    • 02.06.20: - Rebasing to alpine 3.12, serve login page at /ldaplogin as well as /login, to prevent clashes with reverese proxied apps.
    • 17.05.20: - Add support for self-signed CA certs.
    • 20.02.20: - Switch to python3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 01.07.19: - Fall back to base64 encoding when basic http auth is used.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.09.18: - Update pip
    • 14.09.18: - Add TZ parameter, remove unnecessary PUID/PGID params
    • 11.08.18: - Initial release.
    "},{"location":"images/docker-letsencrypt/","title":"letsencrypt","text":""},{"location":"images/docker-letsencrypt/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-letsencrypt/#important-notice-this-image-has-been-deprecated-and-the-project-is-moved-to-a-new-repo","title":"IMPORTANT NOTICE: THIS IMAGE HAS BEEN DEPRECATED AND THE PROJECT IS MOVED TO A NEW REPO","text":"

    Due to a trademark related request, this image is moved to a new repo on Docker Hub and GitHub. This is a breaking change and you need to manually update. Apologies for the the disruption.

    Switching existing implementations over to the new image is very easy, just follow these simple steps: https://github.com/linuxserver/docker-swag#migrating-from-the-old-linuxserverletsencrypt-image

    "},{"location":"images/docker-letsencrypt/#this-repository-will-be-archived-and-builds-for-the-image-will-no-longer-be-created-at-the-end-of-2020","title":"This repository will be archived and builds for the image will no longer be created at the end of 2020","text":""},{"location":"images/docker-letsencrypt/#linuxserverletsencrypt","title":"linuxserver/letsencrypt","text":"

    SWAG - Secure Web-server And Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes. It also contains fail2ban for intrusion prevention.

    "},{"location":"images/docker-letsencrypt/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-letsencrypt/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container.

    "},{"location":"images/docker-letsencrypt/#docker","title":"docker","text":"
    docker create \\\n  --name=swag \\\n  --cap-add=NET_ADMIN \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e URL=yourdomain.url \\\n  -e SUBDOMAINS=www, \\\n  -e VALIDATION=http \\\n  -e DNSPLUGIN=cloudflare `#optional` \\\n  -e PROPAGATION= `#optional` \\\n  -e DUCKDNSTOKEN= `#optional` \\\n  -e EMAIL= `#optional` \\\n  -e ONLY_SUBDOMAINS=false `#optional` \\\n  -e EXTRA_DOMAINS= `#optional` \\\n  -e STAGING=false `#optional` \\\n  -p 443:443 \\\n  -p 80:80 `#optional` \\\n  -v /path/to/appdata/config:/config \\\n  --restart unless-stopped \\\n  linuxserver/letsencrypt\n
    "},{"location":"images/docker-letsencrypt/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\n  swag:\n    image: linuxserver/letsencrypt\n    container_name: swag\n    cap_add:\n      - NET_ADMIN\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=Europe/London\n      - URL=yourdomain.url\n      - SUBDOMAINS=www,\n      - VALIDATION=http\n      - DNSPLUGIN=cloudflare #optional\n      - PROPAGATION= #optional\n      - DUCKDNSTOKEN= #optional\n      - EMAIL= #optional\n      - ONLY_SUBDOMAINS=false #optional\n      - EXTRA_DOMAINS= #optional\n      - STAGING=false #optional\n    volumes:\n      - /path/to/appdata/config:/config\n    ports:\n      - 443:443\n      - 80:80 #optional\n    restart: unless-stopped\n
    "},{"location":"images/docker-letsencrypt/#parameters","title":"Parameters","text":"

    Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Parameter Function -p 443 Https port -p 80 Http port (required for http validation and http -> https redirect) -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London. -e URL=yourdomain.url Top url you have control over (customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). -e SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud. For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns and duckdns validation only) -e VALIDATION=http Certbot validation method to use, options are http, dns or duckdns (dns method also requires DNSPLUGIN variable set) (duckdns method requires DUCKDNSTOKEN variable set, and the SUBDOMAINS variable must be either empty or set to wildcard). -e DNSPLUGIN=cloudflare Required if VALIDATION is set to dns. Options are aliyun, cloudflare, cloudxns, cpanel, digitalocean, dnsimple, dnsmadeeasy, domeneshop, gandi, google, inwx, linode, luadns, nsone, ovh, rfc2136, route53 and transip. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf. -e PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. -e DUCKDNSTOKEN= Required if VALIDATION is set to duckdns. Retrieve your token from https://www.duckdns.org -e EMAIL= Optional e-mail address used for cert expiration notifications. -e ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true -e EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org -e STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes. -v /config All the config files including the webroot reside here."},{"location":"images/docker-letsencrypt/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-letsencrypt/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-letsencrypt/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n

    "},{"location":"images/docker-letsencrypt/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-letsencrypt/#validation-and-initial-setup","title":"Validation and initial setup","text":"
    • Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).
    • For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80
    • For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
    • Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\"
    • Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\"
    • For duckdns validation, either leave the SUBDOMAINS variable empty or set it to wildcard, and set the DUCKDNSTOKEN variable with your duckdns token. Due to a limitation of duckdns, the resulting cert will only cover either main subdomain (ie. yoursubdomain.duckdns.org), or sub-subdomains (ie. *.yoursubdomain.duckdns.org), but will not both at the same time. You can use our duckdns image to update your IP on duckdns.org.
    • --cap-add=NET_ADMIN is required for fail2ban to modify iptables
    • If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation.
    • After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default).
    • Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.
    "},{"location":"images/docker-letsencrypt/#security-and-password-protection","title":"Security and password protection","text":"
    • The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
    • The container provides a pre-generated 4096-bit dhparams.pem (rotated weekly via Jenkins job) for new instances, however you may generate your own by running docker exec letsencrypt openssl dhparam -out /config/nginx/dhparams.pem 4096 WARNING: This takes a very long time
    • If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it letsencrypt htpasswd -c /config/nginx/.htpasswd <username>
    • You can add multiple user:pass to .htpasswd. For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one
    • You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.
    "},{"location":"images/docker-letsencrypt/#site-config-and-reverse-proxy","title":"Site config and reverse proxy","text":"
    • The default site config resides at /config/nginx/site-confs/default. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start.
    • Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo.
    • If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines
    • If you wish to redirect http to https, you must expose port 80
    "},{"location":"images/docker-letsencrypt/#using-certs-in-other-containers","title":"Using certs in other containers","text":"
    • This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.
    • To use these certs in other containers, do either of the following:
    • (Easier) Mount the container's config folder in other containers (ie. -v /path-to-le-config:/le-ssl) and in the other containers, use the cert location /le-ssl/keys/letsencrypt/
    • (More secure) Mount the letsencrypt folder etc/letsencrypt that resides under /config in other containers (ie. -v /path-to-le-config/etc/letsencrypt:/le-ssl) and in the other containers, use the cert location /le-ssl/live/<your.domain.url>/ (This is more secure because the first method shares the entire letsencrypt config folder with other containers, including the www files, whereas the second method only shares the ssl certs)
    • These certs include:
    • cert.pem, chain.pem, fullchain.pem and privkey.pem, which are generated by Let's Encrypt and used by nginx and various other apps
    • privkey.pfx, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)
    • priv-fullchain-bundle.pem, a pem cert that bundles the private key and the fullchain, used by apps like ZNC
    "},{"location":"images/docker-letsencrypt/#using-fail2ban","title":"Using fail2ban","text":"
    • This container includes fail2ban set up with 3 jails by default:
    • nginx-http-auth
    • nginx-badbots
    • nginx-botsearch
    • To enable or disable other jails, modify the file /config/fail2ban/jail.local
    • To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local)
    • You can check which jails are active via docker exec -it swag fail2ban-client status
    • You can check the status of a specific jail via docker exec -it swag fail2ban-client status <jail name>
    • You can unban an IP via docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
    • A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands
    "},{"location":"images/docker-letsencrypt/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    "},{"location":"images/docker-letsencrypt/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running: docker exec -it swag /bin/bash
    • To monitor the logs of the container in realtime: docker logs -f swag
    • container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag
    • image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/letsencrypt
    "},{"location":"images/docker-letsencrypt/#updating-info","title":"Updating Info","text":"

    Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

    Below are the instructions for updating containers:

    "},{"location":"images/docker-letsencrypt/#via-docker-runcreate","title":"Via Docker Run/Create","text":"
    • Update the image: docker pull linuxserver/letsencrypt
    • Stop the running container: docker stop swag
    • Delete the container: docker rm swag
    • Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)
    • Start the new container: docker start swag
    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-letsencrypt/#via-docker-compose","title":"Via Docker Compose","text":"
    • Update all images: docker-compose pull
    • or update a single image: docker-compose pull swag
    • Let compose update all containers as necessary: docker-compose up -d
    • or update a single container: docker-compose up -d swag
    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-letsencrypt/#via-watchtower-auto-updater-especially-useful-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (especially useful if you don't remember the original parameters)","text":"
    • Pull the latest image at its tag and replace it with the same env variables in one run:
      docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once swag\n

    Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.

    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-letsencrypt/#building-locally","title":"Building locally","text":"

    If you want to make local modifications to these images for development purposes or just to customize the logic:

    git clone https://github.com/linuxserver/docker-letsencrypt.git\ncd docker-letsencrypt\ndocker build \\\n  --no-cache \\\n  --pull \\\n  -t linuxserver/letsencrypt:latest .\n

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    "},{"location":"images/docker-letsencrypt/#versions","title":"Versions","text":"
    • 28.07.20: - Start transition to new name, SWAG.
    • 17.06.20: - Reformat ssl.conf. Pull in pre-generated dhparams.pem from DO Spaces. Deprecate DHLEVEL param.
    • 01.06.20: - Rebasing to alpine 3.12, change ldap login address to /ldaplogin to avoid clashes (existing users need to manually update).
    • 31.05.20: - Tweak Authelia confs (existing users can delete authelia-server.conf and authelia-location.conf, and restart to update).
    • 23.05.20: - Add support for Authelia.
    • 15.05.20: - Remove php7-pecl-imagick due to upstream issues. Add support for Geoip2 auto db retrieval.
    • 10.05.20: - Added support for fail2ban deny statements.
    • 04.05.20: - Allow for optionally setting propagation time for dns plugins. Add repo version of whois to replace the built-in busybox version. Update jail.local to change default fail2ban ban action to more widely supported iptables-allports.
    • 13.04.20: - Update cloudflare.ini with token info.
    • 11.03.20: - Add php7-sodium.
    • 06.03.20: - Implement cert renewal attempt during container start (only if the cert is already expired or will expire within the next 24 hours, otherwise it will be attempted at 2:08am).
    • 05.03.20: - Use port and proto upstream variables for ldap and default sample confs.
    • 24.02.20: - Remove world/group read permissions in dns-conf.
    • 23.02.20: - Add aliyun dns validation plugin.
    • 28.01.20: - Deprecate tls-sni validation method, remove from docs.
    • 27.01.20: - Add support for cpanel dns validation.
    • 10.01.20: - Add support for domeneshop dns validation.
    • 07.01.20: - Update ciphers from Mozilla ssl-config recommendations.
    • 01.01.20: - Add support for gandi dns validation.
    • 31.12.19: - GeoIP2 databases now require personal license keys to download. Auto download is disabled and log message is added.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.12.19: - Increase large_client_header_buffers in nginx.conf to prevent 414 errors.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 11.12.19: - Fix Google Cloud DNS to use .json file for authentication.
    • 20.11.19: - Fix cryptography version mismatch due to pip issue.
    • 17.11.19: - Add php7-pdo_odbc.
    • 17.11.19: - Add transip dns validation plugin.
    • 27.10.19: - Turn off lua resty core to get rid of error message in the log (existing users will have to delete /config/nginx/nginx.conf and restart the container).
    • 26.10.19: - Add new package for stream-geoip2, remove geoip2 module patch.
    • 24.10.19: - Add php7-pecl-imagick.
    • 23.10.19: - Update Host header in proxy.conf to fix CSRF issues.
    • 12.10.19: - Add linode dns validation plugin.
    • 23.09.19: - Move GeoIP2 db to /config to make it persistent.
    • 14.08.19: - Add inwx dns validation plugin.
    • 06.08.19: - Add php7-ftp.
    • 04.08.19: - Add php7-bcmath, php7-pear, php7-xmlrpc.
    • 02.08.19: - Add php7-ldap, remove geoip v1(deprecated).
    • 01.08.19: - Mark https redirect block as default_server (effective only for new installs).
    • 31.07.19: - Create GeoIP2 databse (libmaxminddb) during container start if it doesn't exist.
    • 30.07.19: - Support main domain via duckdns validation.
    • 29.07.19: - Enable http to https redirect by default (effective only for new installs).
    • 01.07.19: - Patch geoip2 module until upstream is fixed.
    • 30.06.19: - Add geoip2 module.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 19.06.19: - Set resolver to docker dns in ssl.conf.
    • 29.05.19: - Compensate for changes to the reverse-proxy-confs repo.
    • 26.05.19: - Remove botocore/urllib patch.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 12.04.19: - Rebase aarch64 image to 3.9.
    • 25.03.19: - Rebase aarch64 image back to 3.8 due to python issues (specifically with fail2ban), switch packages to python 3 on amd64 and armhf, clean up pip/python cache to shrink image size.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 10.03.19: - Add TLSv1.3 to ssl.conf.
    • 02.03.19: - Add php intl and posix modules.
    • 27.02.19: - Add gnupg package.
    • 22.02.19: - Rebase to alpine 3.9.
    • 03.02.19: - Removed memcached due to seccomp errors. Let us know if you need to re-enable memcached.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 21.01.19: - Remove client_body_max from proxy.conf (existing users need to manually update).
    • 09.01.19: - Remove tls v1 and v1.1 from default ssl.conf, update ciphers (existing users need to manually update).
    • 30.12.18: - Fix bundle key generation.
    • 19.12.18: - Add ipv6 and http/2 support to default site config.
    • 08.12.18: - Had to remove cert renewal during container start due to certbot's new undocumented feature of up to 8 minute random delay.
    • 03.12.18: - Fix silly bug resetting the duckdns token.
    • 02.12.18: - Add dns validation support for ovh.
    • 20.11.18: - Externalize reverse proxy confs to separate github repo linuxserver/reverse-proxy-confs, update baseimage packages during build
    • 19.11.18: - Add php opcache package.
    • 12.11.18: - Add support for duckdns wildcard certs via dns validation
    • 31.10.18: - Add various preset proxy confs and fix others (thanks @nemchik and @hijxf)
    • 02.10.18: - Fix fail2ban instructions and logrotate conf
    • 11.09.18: - Add various preset proxy confs and fix others (thanks @nemchik and @LeoVerto)
    • 04.09.18: - Linting fixes.
    • 30.08.18: - Add support for ldap auth, add proxy confs for bazarr, couchpotato, headphones, lidarr and plex subfolder (thanks @nemchik and @jedahan)
    • 21.08.18: - Rebase to alpine 3.8, add info on search engine de-listing
    • 08.08.18: - Add subdomain proxy conf for plex, update emby proxy confs
    • 25.07.18: - Add subdomain proxy conf for syncthing
    • 23.07.18: - Remove backwards compatibility and set default validation method to http. Update portainer proxy config to fix websockets. Add unifi proxy conf.
    • 31.05.18: - Update ssl.conf and proxy.conf for tighter security (thanks @nemchik)
    • 30.05.18: - Add reverse proxy configs for jackett, monitorr, nzbget, nzbletsencrypt, organizr, portainer and transmission (thanks @nemchik)
    • 18.05.18: - Add more info on certs and unraid reverse proxy config
    • 11.05.18: - Add php pgsql support
    • 24.04.18: - Auto generate a private key + fullchain bundle pem that is needed by certain apps
    • 20.04.18: - Add standardized optional reverse proxy conf files
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3
    • 08.04.18: - Fix renewal hooks
    • 29.03.18: - Create pfx cert after renewal for dns validation (previous version only created it for http and tls, an oversight)
    • 29.03.18: - Fix staging for v2 api
    • 13.03.18: - Support for wildcard cert with dns validation added. Switched to v2 api for ACME.
    • 21.02.18: - Reduce shellcheck directives by renaming secondary variables
    • 20.02.18: - Sanitize variables, increase log verbosity
    • 01.02.18: - Big changes. VALIDATION parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL is deprecated. STAGING parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf
    • 13.01.18: - Re-enable ipv6 due to update to fail2ban 0.10.1. Existing users can enable ipv6 by deleting /config/fail2ban/action.d/iptables-common.local and restarting the container after updating the image
    • 11.01.18: - Halt the container if validation fails instead of a stop (so restart=always doesn't get users throttled with Let's Encrypt)
    • 10.01.18: - Add option for http validation on port 80
    • 05.01.18: - Rebase to alpine 3.7
    • 04.11.17: - Add php7 soap module
    • 31.10.17: - Add php7 exif and xmlreader modules
    • 25.09.17: - Manage fail2ban via s6
    • 24.09.17: - Add memcached service
    • 01.09.17: - --privileged is no longer required as long as --cap-add=NET_ADMIN is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modules
    • 31.08.17: - Add php7-phar
    • 14.07.17: - Enable modules dynamically in nginx.conf
    • 06.07.17: - Add support for multiple domains (thanks @oznu)
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf
    • 16.06.17: - Update deprecated certbot option for https validation, make e-mail entry optional, update readme
    • 05.06.17: - Add php7-bz2
    • 27.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Fix log permissions.
    • 18.04.17: - Add php7-sockets, update fail2ban filter and action defaults
    • 27.02.17: - Add php7-dom, php7-iconv and php7-pdo_sqlite
    • 21.02.17: - Add php7-xml
    • 10.02.17: - Switch to alpine 3.5 base and php7, add php zlib module and all nginx modules
    • 13.01.17: - Add php5-ctype and php5-openssl
    • 04.01.17: - Add php5-mysqli and php5-pdo_mysql
    • 22.11.16: - Add gd and mcrypt packages
    • 21.11.16: - Add curl package
    • 07.11.16: - Initial Release
    "},{"location":"images/docker-libreoffice/","title":"libreoffice","text":""},{"location":"images/docker-libreoffice/#linuxserverlibreoffice","title":"linuxserver/libreoffice","text":"

    LibreOffice is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity.

    "},{"location":"images/docker-libreoffice/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-libreoffice/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-libreoffice/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-libreoffice/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nlibreoffice:\nimage: lscr.io/linuxserver/libreoffice:latest\ncontainer_name: libreoffice\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-libreoffice/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=libreoffice \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/libreoffice:latest\n
    "},{"location":"images/docker-libreoffice/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-libreoffice/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 LibreOffice desktop gui."},{"location":"images/docker-libreoffice/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-libreoffice/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and documents"},{"location":"images/docker-libreoffice/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-libreoffice/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-libreoffice/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-libreoffice/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-libreoffice/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-libreoffice/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it libreoffice /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libreoffice
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libreoffice
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/libreoffice:latest
    "},{"location":"images/docker-libreoffice/#versions","title":"Versions","text":"
    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 05.04.21: - Initial release.
    "},{"location":"images/docker-libresonic/","title":"libresonic","text":""},{"location":"images/docker-libresonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic

    "},{"location":"images/docker-libresonic/#linuxserverlibresonic","title":"linuxserver/libresonic","text":"

    Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room.

    "},{"location":"images/docker-libresonic/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-libresonic/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-libresonic/#docker","title":"docker","text":"
    docker create \\\n  --name=libresonic \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e CONTEXT_PATH=<URL_BASE> `#optional` \\\n  -p 4040:4040 \\\n  -v </path/to/config>:/config \\\n  -v </path/to/music>:/music \\\n  -v </path/to/playlists>:/playlists \\\n  -v </path/to/podcasts>:/podcasts \\\n  -v </path/to/other media>:/media `#optional` \\\n  --restart unless-stopped \\\n  linuxserver/libresonic\n
    "},{"location":"images/docker-libresonic/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2\"\nservices:\nlibresonic:\nimage: linuxserver/libresonic\ncontainer_name: libresonic\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONTEXT_PATH=<URL_BASE> #optional\nvolumes:\n- </path/to/config>:/config\n- </path/to/music>:/music\n- </path/to/playlists>:/playlists\n- </path/to/podcasts>:/podcasts\nvolumes:\n- </path/to/other media>:/media #optional\nports:\n- 4040:4040\nrestart: unless-stopped\n
    "},{"location":"images/docker-libresonic/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-libresonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"images/docker-libresonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups."},{"location":"images/docker-libresonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"images/docker-libresonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-libresonic/#application-setup","title":"Application Setup","text":"

    Access WebUI at <your-ip>:4040.

    Default user/pass is admin/admin

    "},{"location":"images/docker-libresonic/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it libresonic /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f libresonic
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libresonic
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/libresonic
    "},{"location":"images/docker-libresonic/#versions","title":"Versions","text":"
    • 24.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 15.01.19: - Pull war from github, adding pipeline multi arch builds.
    • 05.01.19: - Linting fixes.
    • 27.08.18: - Rebase to ubuntu bionic.
    • 12.12.17: - Rebase to alpine 3.7.
    • 11.07.17: - Rebase to alpine 3.6.
    • 12.05.17: - Add annotation timeout (primarily for armhf and lower powered hosts).
    • 08.02.17: - Rebase to alpine 3.5.
    • 04.12.16: - Update jetty runner version.
    • 29.11.16: - Switch to building from release tags following v6.1 stable release.
    • 17.11.16: - Initial Release.
    "},{"location":"images/docker-librespeed/","title":"librespeed","text":""},{"location":"images/docker-librespeed/#linuxserverlibrespeed","title":"linuxserver/librespeed","text":"

    Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit.

    "},{"location":"images/docker-librespeed/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-librespeed/#application-setup","title":"Application Setup","text":"

    Access the speedtest webui at http://SERVERIP. The results database can be accessed at http://SERVERIP/results/stats.php with the password set. The default template used is based on example-singleServer-full.html. However, all templates are provided for reference at /config/www/. Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default.

    You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www and they will supersede the defaults after a container start. Keep in mind that once you do so, they will no longer be updated. You can delete them and recreate the container to go back to the image defaults.

    If you are setting up a mysql or postgresql database, you first need to import the tables into your database as described at the following link https://github.com/librespeed/speedtest/blob/master/doc.md#creating-the-database

    To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking.

    "},{"location":"images/docker-librespeed/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-librespeed/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nlibrespeed:\nimage: lscr.io/linuxserver/librespeed:latest\ncontainer_name: librespeed\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PASSWORD=PASSWORD\n- CUSTOM_RESULTS=false #optional\n- DB_TYPE=sqlite #optional\n- DB_NAME=DB_NAME #optional\n- DB_HOSTNAME=DB_HOSTNAME #optional\n- DB_USERNAME=DB_USERNAME #optional\n- DB_PASSWORD=DB_PASSWORD #optional\n- DB_PORT=DB_PORT #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-librespeed/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=librespeed \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PASSWORD=PASSWORD \\\n-e CUSTOM_RESULTS=false `#optional` \\\n-e DB_TYPE=sqlite `#optional` \\\n-e DB_NAME=DB_NAME `#optional` \\\n-e DB_HOSTNAME=DB_HOSTNAME `#optional` \\\n-e DB_USERNAME=DB_USERNAME `#optional` \\\n-e DB_PASSWORD=DB_PASSWORD `#optional` \\\n-e DB_PORT=DB_PORT `#optional` \\\n-p 80:80 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/librespeed:latest\n
    "},{"location":"images/docker-librespeed/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-librespeed/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 web gui"},{"location":"images/docker-librespeed/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PASSWORD=PASSWORD Set the password for the results database. CUSTOM_RESULTS=false (optional) set to true to enable custom results page in /config/www/results/index.php. DB_TYPE=sqlite Defaults to sqlite, can also be set to mysql or postgresql. DB_NAME=DB_NAME Database name. Required for mysql and pgsql. DB_HOSTNAME=DB_HOSTNAME Database address. Required for mysql and pgsql. DB_USERNAME=DB_USERNAME Database username. Required for mysql and pgsql. DB_PASSWORD=DB_PASSWORD Database password. Required for mysql and pgsql. DB_PORT=DB_PORT Database port. Required for mysql."},{"location":"images/docker-librespeed/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-librespeed/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-librespeed/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-librespeed/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-librespeed/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-librespeed/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-librespeed/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it librespeed /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f librespeed
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' librespeed
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/librespeed:latest
    "},{"location":"images/docker-librespeed/#versions","title":"Versions","text":"
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 01.03.21: - Fix up database settings. Make sure index.html is recreated.
    • 28.02.21: - Added php7-ctype.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 29.04.20: - Add donation links for LibreSpeed to Github sponsor button and container log.
    • 09.01.20: - Initial Release.
    "},{"location":"images/docker-lidarr/","title":"lidarr","text":""},{"location":"images/docker-lidarr/#linuxserverlidarr","title":"linuxserver/lidarr","text":"

    Lidarr is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

    "},{"location":"images/docker-lidarr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-lidarr/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Lidarr releases. develop \u2705 Develop Lidarr Releases. nightly \u2705 Nightly Lidarr Releases."},{"location":"images/docker-lidarr/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:8686, for more information check out Lidarr.

    Special Note: Following our current folder structure will result in an inability to hardlink from your downloads to your Music folder because they are on seperate volumes. To support hardlinking, simply ensure that the Music and downloads data are on a single volume. For example, if you have /mnt/storage/Music and /mnt/storage/downloads/completed/Music, you would want something like /mnt/storage:/media for your volume. Then you can hardlink from /media/downloads/completed to /media/Music.

    Another item to keep in mind, is that within lidarr itself, you should then map your download client folder to your lidarr folder: Settings -> Download Client -> advanced -> remote path mappings. I input the host of my download client (matches the download client defined) remote path is /downloads/Music (relative to the internal container path) and local path is /media/downloads/completed/Music, assuming you have folders to seperate your downloaded data types.

    "},{"location":"images/docker-lidarr/#media-folders","title":"Media folders","text":"

    We have set /music and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    "},{"location":"images/docker-lidarr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-lidarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nlidarr:\nimage: lscr.io/linuxserver/lidarr:latest\ncontainer_name: lidarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/music:/music #optional\n- /path/to/downloads:/downloads #optional\nports:\n- 8686:8686\nrestart: unless-stopped\n
    "},{"location":"images/docker-lidarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=lidarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8686:8686 \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/music:/music `#optional` \\\n-v /path/to/downloads:/downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/lidarr:latest\n
    "},{"location":"images/docker-lidarr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-lidarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 8686 Application WebUI"},{"location":"images/docker-lidarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-lidarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files for Lidarr. /music Music files (See note in Application setup). /downloads Path to your download folder for music (See note in Application setup)."},{"location":"images/docker-lidarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lidarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-lidarr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-lidarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-lidarr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-lidarr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it lidarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lidarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lidarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lidarr:latest
    "},{"location":"images/docker-lidarr/#versions","title":"Versions","text":"
    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 06.05.22: - Rebase master branch to Focal.
    • 06.05.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine, deprecate nightly-alpine branch.
    • 30.12.21: - Add nightly-alpine branch.
    • 01.08.21: - Add libchromaprint-tools.
    • 11.07.21: - Make the paths clearer to the user.
    • 18.04.21: - Switch latest tag to net core.
    • 25.01.21: - Publish develop tag.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 18.04.20: - Removed /downloads and /music volumes from Dockerfiles.
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 08.03.19: - Rebase to Bionic, use proposed endpoint for libchromaprint.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 22.04.18: - Switch to beta builds.
    • 17.03.18: - Add ENV XDG_CONFIG_HOME=\"/config/xdg\" to Dockerfile for signalr fix.
    • 27.02.18: - Use json to query for new version.
    • 23.02.18: - Initial Release.
    "},{"location":"images/docker-limnoria/","title":"limnoria","text":""},{"location":"images/docker-limnoria/#linuxserverlimnoria","title":"linuxserver/limnoria","text":"

    Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.

    "},{"location":"images/docker-limnoria/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-limnoria/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-limnoria/#new-configuration","title":"New Configuration","text":"

    If you do not have an existing config you will need to start the container and then run the following wizard command:

    docker exec -it -w /config -u abc limnoria limnoria-wizard

    "},{"location":"images/docker-limnoria/#existing-configuration","title":"Existing Configuration","text":"

    If you have an existing config, adjust the directory settings in your conf file as follows:

    supybot.directories.backup: /config/backup\nsupybot.directories.conf: /config/conf\nsupybot.directories.data: /config/data\nsupybot.directories.data.tmp: /config/data/tmp\nsupybot.directories.data.web: /config/web\nsupybot.directories.log: /config/logs\nsupybot.directories.plugins: /config/plugins\n

    NOTE: These are not grouped together in the file. You will need to search your conf file for the variables.

    Then place your conf file and any of your existing directories in /config and start up the container.

    "},{"location":"images/docker-limnoria/#plugin-requirements","title":"Plugin Requirements","text":"

    The container will pip install any requirements.txt it finds in the /config/plugins folder on startup.

    If you install a plugin using the PluginDownloader that includes a requirements.txt you can execute a shell into the container and then use pip install /config/plugins/ThePlugin/requirements.txt or restart the container and the requirements will be installed.

    "},{"location":"images/docker-limnoria/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-limnoria/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nlimnoria:\nimage: lscr.io/linuxserver/limnoria:latest\ncontainer_name: limnoria\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- path/to/config:/config\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-limnoria/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=limnoria \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8080:8080 \\\n-v path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/limnoria:latest\n
    "},{"location":"images/docker-limnoria/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-limnoria/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for Limnoria's web interface."},{"location":"images/docker-limnoria/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-limnoria/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Limnoria config is stored."},{"location":"images/docker-limnoria/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-limnoria/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-limnoria/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-limnoria/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-limnoria/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-limnoria/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it limnoria /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f limnoria
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' limnoria
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/limnoria:latest
    "},{"location":"images/docker-limnoria/#versions","title":"Versions","text":"
    • 22.12.22: - Rebase to alpine 3.17.
    • 19.09.22: - Rebase to alpine 3.15.
    • 25.05.21: - Install plugin requirements on container init.
    • 17.05.21: - Add linuxserver wheel index.
    • 13.02.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 13.01.20: - Initial Release.
    "},{"location":"images/docker-lychee/","title":"lychee","text":""},{"location":"images/docker-lychee/#linuxserverlychee","title":"linuxserver/lychee","text":"

    Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.\"

    "},{"location":"images/docker-lychee/#upgrade-warning","title":"UPGRADE WARNING","text":"

    Please note that the v4 upgrade process resets ALL password-protected albums. Any albums that were made public with a password will need to be re-secured.

    "},{"location":"images/docker-lychee/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-lychee/#application-setup","title":"Application Setup","text":"

    This image will not work with a prefilled /pictures mount, lychee wants total control over this folder

    Setup mysql/mariadb and account via the webui, accessible at http://SERVERIP:PORT More info at lychee.

    "},{"location":"images/docker-lychee/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-lychee/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    version: \"3\"\nservices:\nmariadb:\nimage: lscr.io/linuxserver/mariadb:latest\ncontainer_name: lychee_mariadb\nrestart: always\nvolumes:\n- /path/to/mariadb/data:/config\nenvironment:\n- MYSQL_ROOT_PASSWORD=rootpassword\n- MYSQL_DATABASE=lychee\n- MYSQL_USER=lychee\n- MYSQL_PASSWORD=dbpassword\n- PGID=1000\n- PUID=1000\n- TZ=Europe/London\nlychee:\nimage: lscr.io/linuxserver/lychee:latest\ncontainer_name: lychee\nrestart: always\ndepends_on:\n- mariadb\nvolumes:\n- /path/to/config:/config\n- /path/to/pictures:/pictures\nenvironment:\n- DB_HOST=mariadb\n- DB_USERNAME=lychee\n- DB_PASSWORD=dbpassword\n- DB_DATABASE=lychee\n- DB_PORT=3306\n- PGID=1000\n- PUID=1000\n- TZ=Europe/London\nports:\n- 80:80\n
    "},{"location":"images/docker-lychee/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=lychee \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e DB_HOST=mariadb \\\n-e DB_USERNAME=lychee \\\n-e DB_PASSWORD=dbpassword \\\n-e DB_DATABASE=lychee \\\n-p 80:80 \\\n-v /path/to/config:/config \\\n-v /path/to/pictures:/pictures \\\n--restart unless-stopped \\\nlscr.io/linuxserver/lychee:latest\n
    "},{"location":"images/docker-lychee/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-lychee/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui"},{"location":"images/docker-lychee/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London DB_HOST=mariadb for specifying the database host DB_USERNAME=lychee for specifying the database user DB_PASSWORD=dbpassword for specifying the database password DB_DATABASE=lychee for specifying the database to be used"},{"location":"images/docker-lychee/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /pictures Where lychee will store uploaded data."},{"location":"images/docker-lychee/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-lychee/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-lychee/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-lychee/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-lychee/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-lychee/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it lychee /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f lychee
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lychee
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lychee:latest
    "},{"location":"images/docker-lychee/#versions","title":"Versions","text":"
    • 04.12.21: - Rebase to alpine 3.15 with php8.
    • 13.05.21: - Make readme clearer.
    • 18.04.21: - Add php-intl for v4.3.
    • 31.01.21: - Add jpegoptim.
    • 15.01.21: - Rebase to alpine 3.13, add php7-ctype.
    • 10.07.20: - Upgrade to Lychee v4 and rebased to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.10.19: - Increase fastcgi timeouts (existing users need to manually update).
    • 19.09.19: - Update project website url.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 05.05.19: - Rebase to alpine 3.9, use new armv7 image format.
    • 21.01.18: - Added ffmpeg for video thumbnail creation, switched to installing zip release instead of source tarball, created small thumbnails folder, switched to dynamic readme.
    • 14.01.19: - Adding pipeline logic and multi arch..
    • 04.09.18: - Rebase to alpine 3.8, switch to LycheeOrg repository.
    • 08.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 12.02.17: - Initial Release.
    "},{"location":"images/docker-mariadb/","title":"mariadb","text":""},{"location":"images/docker-mariadb/#linuxservermariadb","title":"linuxserver/mariadb","text":"

    Mariadb is one of the most popular database servers. Made by the original developers of MySQL.

    "},{"location":"images/docker-mariadb/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-mariadb/#application-setup","title":"Application Setup","text":"

    If you didn't set a password during installation, (see logs for warning) use mysqladmin -u root password <PASSWORD> to set one at the docker prompt...

    NOTE changing the MYSQL_ROOT_PASSWORD variable after the container has set up the initial databases has no effect, use the mysqladmin tool to change your mariadb password.

    NOTE if you want to use (MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD) all three of these variables need to be set you cannot pick and choose.

    Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable.

    Find custom.cnf in /config for config changes (restart container for them to take effect) , the databases in /config/databases and the log in /config/log/myqsl

    "},{"location":"images/docker-mariadb/#loading-passwords-and-users-from-files","title":"Loading passwords and users from files","text":"

    The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file:

    /config/env\n

    Using the following format:

    MYSQL_ROOT_PASSWORD=\"ROOT_ACCESS_PASSWORD\"\nMYSQL_DATABASE=\"USER_DB_NAME\"\nMYSQL_USER=\"MYSQL_USER\"\nMYSQL_PASSWORD=\"DATABASE_PASSWORD\"\nREMOTE_SQL=\"http://URL1/your.sql,https://URL2/your.sql\"\n

    These settings can be mixed and matched with Docker ENV settings as you require, but the settings in the file will always take precedence.

    "},{"location":"images/docker-mariadb/#bootstrapping-a-new-instance","title":"Bootstrapping a new instance","text":"

    We support a one time run of custom sql files on init. In order to use this place *.sql files in:

    /config/initdb.d/\n
    This will have the same effect as setting the REMOTE_SQL environment variable. The sql will only be run on the containers first boot and setup.

    "},{"location":"images/docker-mariadb/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-mariadb/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmariadb:\nimage: lscr.io/linuxserver/mariadb:latest\ncontainer_name: mariadb\nenvironment:\n- PUID=1000\n- PGID=1000\n- MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD\n- TZ=Europe/London\n- MYSQL_DATABASE=USER_DB_NAME #optional\n- MYSQL_USER=MYSQL_USER #optional\n- MYSQL_PASSWORD=DATABASE_PASSWORD #optional\n- REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql #optional\nvolumes:\n- path_to_data:/config\nports:\n- 3306:3306\nrestart: unless-stopped\n
    "},{"location":"images/docker-mariadb/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=mariadb \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \\\n-e TZ=Europe/London \\\n-e MYSQL_DATABASE=USER_DB_NAME `#optional` \\\n-e MYSQL_USER=MYSQL_USER `#optional` \\\n-e MYSQL_PASSWORD=DATABASE_PASSWORD `#optional` \\\n-e REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql `#optional` \\\n-p 3306:3306 \\\n-v path_to_data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mariadb:latest\n
    "},{"location":"images/docker-mariadb/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mariadb/#ports-p","title":"Ports (-p)","text":"Parameter Function 3306 Mariadb listens on this port."},{"location":"images/docker-mariadb/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD Set this to root password for installation (minimum 4 characters & non-alphanumeric passwords must be properly escaped). TZ=Europe/London Specify a timezone to use EG Europe/London. MYSQL_DATABASE=USER_DB_NAME Specify the name of a database to be created on image startup. MYSQL_USER=MYSQL_USER This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here). MYSQL_PASSWORD=DATABASE_PASSWORD Set this to the password you want to use for you MYSQL_USER (minimum 4 characters & non-alphanumeric passwords must be properly escaped). REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql Set this to ingest sql files from an http/https endpoint (comma seperated array)."},{"location":"images/docker-mariadb/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains the db itself and all assorted settings."},{"location":"images/docker-mariadb/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mariadb/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mariadb/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mariadb/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mariadb/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mariadb/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mariadb /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mariadb
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mariadb
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mariadb:latest
    "},{"location":"images/docker-mariadb/#versions","title":"Versions","text":"
    • 11.10.22: - Rebase master to Alpine 3.16, migrate to s6v3, remove password escape logic which caused problems for a small subset of users.
    • 06.07.21: - Rebase master to alpine.
    • 03.07.21: - Rebase to 3.14.
    • 08.02.21: - Fix new installs.
    • 08.02.21: - Rebase to alpine. Add mariadb-backup.
    • 08.02.21: - Release alpine tag. The alpine release will replace the latest tag in the near future.
    • 27.10.19: - Bump to 10.4, ability use custom sql on initial init ,defining root passwords via file.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 07.03.19: - Add ability to setup a database and default user on first spinup.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 10.09.18: - Rebase to ubuntu bionic and use 10.3 mariadb repository.
    • 09.12.17: - Fix continuation lines.
    • 12.09.17: - Gracefully shut down mariadb.
    • 27.10.16: - Implement linting suggestions on database init script.
    • 11.10.16: - Rebase to ubuntu xenial, add version labelling.
    • 09.03.16: - Update to mariadb 10.1. Change to use custom.cnf over my.cnf in /config. Restructured init files to change config options on startup, rather than in the dockerfile.
    • 26.01.16: - Change user of mysqld_safe script to abc, better unclean shutdown handling on restart.
    • 23.12.15: - Remove autoupdating, between some version updates the container breaks.
    • 12.08.15: - Initial Release.
    "},{"location":"images/docker-mastodon/","title":"mastodon","text":""},{"location":"images/docker-mastodon/#linuxservermastodon","title":"linuxserver/mastodon","text":"

    Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..

    "},{"location":"images/docker-mastodon/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-mastodon/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases. develop \u2705 Pre-releases only."},{"location":"images/docker-mastodon/#application-setup","title":"Application Setup","text":"

    To generate keys for SECRET_KEY_BASE & OTP_SECRET run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon secret once for each.

    To generate keys for VAPID_PRIVATE_KEY & VAPID_PUBLIC_KEY run docker run --rm -it -w /app/www --entrypoint rake lscr.io/linuxserver/mastodon mastodon:webpush:generate_vapid_key

    To use tootctl you can run something like docker exec -it -w /app/www mastodon bin/tootctl <command>

    This container requires separate postgres and redis instances to run.

    We support all of the official environment variables for configuration. In place of adding them all to your run/compose you can use an env file such as this example from the upstream project.

    For more information check out the mastodon documentation.

    "},{"location":"images/docker-mastodon/#running-separate-sidekiq-instances","title":"Running separate sidekiq instances","text":"

    It is currently only supported to run a single queue per container instance or all queues in a single container instance.

    All containers must share the same `/config`` mount and be on a common docker network.

    "},{"location":"images/docker-mastodon/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image automatically redirects to https with a self-signed certificate. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-mastodon/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-mastodon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmastodon:\nimage: lscr.io/linuxserver/mastodon:latest\ncontainer_name: mastodon\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- LOCAL_DOMAIN=example.com\n- REDIS_HOST=redis\n- REDIS_PORT=6379\n- DB_HOST=db\n- DB_USER=mastodon\n- DB_NAME=mastodon\n- DB_PASS=mastodon\n- DB_PORT=5432\n- ES_ENABLED=false\n- SECRET_KEY_BASE=\n- OTP_SECRET=\n- VAPID_PRIVATE_KEY=\n- VAPID_PUBLIC_KEY=\n- SMTP_SERVER=mail.example.com\n- SMTP_PORT=25\n- SMTP_LOGIN=\n- SMTP_PASSWORD=\n- SMTP_FROM_ADDRESS=notifications@example.com\n- S3_ENABLED=false\n- WEB_DOMAIN=mastodon.example.com #optional\n- ES_HOST=es #optional\n- ES_PORT=9200 #optional\n- ES_USER=elastic #optional\n- ES_PASS=elastic #optional\n- S3_BUCKET= #optional\n- AWS_ACCESS_KEY_ID= #optional\n- AWS_SECRET_ACCESS_KEY= #optional\n- S3_ALIAS_HOST= #optional\n- SIDEKIQ_ONLY=false #optional\n- SIDEKIQ_QUEUE= #optional\n- SIDEKIQ_DEFAULT=false #optional\n- SIDEKIQ_THREADS=5 #optional\n- DB_POOL=5 #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-mastodon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=mastodon \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e LOCAL_DOMAIN=example.com \\\n-e REDIS_HOST=redis \\\n-e REDIS_PORT=6379 \\\n-e DB_HOST=db \\\n-e DB_USER=mastodon \\\n-e DB_NAME=mastodon \\\n-e DB_PASS=mastodon \\\n-e DB_PORT=5432 \\\n-e ES_ENABLED=false \\\n-e SECRET_KEY_BASE= \\\n-e OTP_SECRET= \\\n-e VAPID_PRIVATE_KEY= \\\n-e VAPID_PUBLIC_KEY= \\\n-e SMTP_SERVER=mail.example.com \\\n-e SMTP_PORT=25 \\\n-e SMTP_LOGIN= \\\n-e SMTP_PASSWORD= \\\n-e SMTP_FROM_ADDRESS=notifications@example.com \\\n-e S3_ENABLED=false \\\n-e WEB_DOMAIN=mastodon.example.com `#optional` \\\n-e ES_HOST=es `#optional` \\\n-e ES_PORT=9200 `#optional` \\\n-e ES_USER=elastic `#optional` \\\n-e ES_PASS=elastic `#optional` \\\n-e S3_BUCKET= `#optional` \\\n-e AWS_ACCESS_KEY_ID= `#optional` \\\n-e AWS_SECRET_ACCESS_KEY= `#optional` \\\n-e S3_ALIAS_HOST= `#optional` \\\n-e SIDEKIQ_ONLY=false `#optional` \\\n-e SIDEKIQ_QUEUE= `#optional` \\\n-e SIDEKIQ_DEFAULT=false `#optional` \\\n-e SIDEKIQ_THREADS=5 `#optional` \\\n-e DB_POOL=5 `#optional` \\\n-p 80:80 \\\n-p 443:443 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mastodon:latest\n
    "},{"location":"images/docker-mastodon/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mastodon/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend 443 Port for web frontend"},{"location":"images/docker-mastodon/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York LOCAL_DOMAIN=example.com This is the unique identifier of your server in the network. It cannot be safely changed later. REDIS_HOST=redis Redis server hostname REDIS_PORT=6379 Redis port DB_HOST=db Postgres database hostname DB_USER=mastodon Postgres username DB_NAME=mastodon Postgres db name DB_PASS=mastodon Postgres password DB_PORT=5432 Portgres port ES_ENABLED=false Enable or disable Elasticsearch (requires a separate ES instance) SECRET_KEY_BASE= Browser session secret. Changing it will break all active browser sessions. OTP_SECRET= MFA secret. Changing it will break two-factor authentication. VAPID_PRIVATE_KEY= Push notification private key. Changing it will break push notifications. VAPID_PUBLIC_KEY= Push notification public key. Changing it will break push notifications. SMTP_SERVER=mail.example.com SMTP server for email notifications SMTP_PORT=25 SMTP server port SMTP_LOGIN= SMTP username SMTP_PASSWORD= SMTP password SMTP_FROM_ADDRESS=notifications@example.com From address for emails send from Mastodon S3_ENABLED=false Enable or disable S3 storage of uploaded files WEB_DOMAIN=mastodon.example.com This can be set if you want your server identifier to be different to the subdomain hosting Mastodon. See https://docs.joinmastodon.org/admin/config/#basic ES_HOST=es Elasticsearch server hostname ES_PORT=9200 Elasticsearch port ES_USER=elastic Elasticsearch username ES_PASS=elastic Elasticsearch password S3_BUCKET= S3 bucket hostname AWS_ACCESS_KEY_ID= S3 bucket access key ID AWS_SECRET_ACCESS_KEY= S3 bucket secret access key S3_ALIAS_HOST= Alternate hostname for object fetching if you are front the S3 connections. SIDEKIQ_ONLY=false Only run the sidekiq service in this container instance. For large scale instances that need better queue handling. SIDEKIQ_QUEUE= The name of the sidekiq queue to run in this container. See notes. SIDEKIQ_DEFAULT=false Set to true on the main container if you're running additional sidekiq instances. It will run the default queue. SIDEKIQ_THREADS=5 The number of threads for sidekiq to use. See notes. DB_POOL=5 The size of the DB connection pool, must be at least the same as SIDEKIQ_THREADS. See notes."},{"location":"images/docker-mastodon/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-mastodon/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mastodon/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mastodon/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mastodon/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mastodon/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mastodon/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mastodon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mastodon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mastodon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mastodon:latest
    "},{"location":"images/docker-mastodon/#versions","title":"Versions","text":"
    • 09.01.23: - Updated nginx conf to fix bring inline with Mastodon configuration (fixes Elk integration).
    • 19.12.22: - Support separate sidekiq queue instances.
    • 05.11.22: - Initial Release.
    "},{"location":"images/docker-medusa/","title":"medusa","text":""},{"location":"images/docker-medusa/#linuxservermedusa","title":"linuxserver/medusa","text":"

    Medusa is an automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

    "},{"location":"images/docker-medusa/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-medusa/#application-setup","title":"Application Setup","text":"

    Web interface is at <your ip>:8081.

    Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa.

    "},{"location":"images/docker-medusa/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-medusa/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmedusa:\nimage: lscr.io/linuxserver/medusa:latest\ncontainer_name: medusa\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <path to downloads>:/downloads\n- <path to tv shows>:/tv\nports:\n- 8081:8081\nrestart: unless-stopped\n
    "},{"location":"images/docker-medusa/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=medusa \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8081:8081 \\\n-v <path to data>:/config \\\n-v <path to downloads>:/downloads \\\n-v <path to tv shows>:/tv \\\n--restart unless-stopped \\\nlscr.io/linuxserver/medusa:latest\n
    "},{"location":"images/docker-medusa/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-medusa/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 The port for the Medusa webui"},{"location":"images/docker-medusa/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London"},{"location":"images/docker-medusa/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Medusa config /downloads Download location /tv TV Shows location"},{"location":"images/docker-medusa/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-medusa/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-medusa/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-medusa/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-medusa/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-medusa/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it medusa /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f medusa
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' medusa
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/medusa:latest
    "},{"location":"images/docker-medusa/#versions","title":"Versions","text":"
    • 12.09.22: - Install ffmpeg for postprocessing.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 28.02.22: - Install python3 requirements for app.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 22.09.19: - Switch to python3.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 14.01.19: - Adding multi arch and pipeline logic
    • 16.08.18: - Rebase to alpine 3.8
    • 08.12.17: - Rebase to alpine 3.7
    • 29.11.17: - Add py-gdbm for subtitles support
    • 26.10.17: - Mediainfo moved from testing to community repo
    • 10.10.17: - Use repo version of mediainfo to shorten build time
    • 05.08.17: - Internal git pull instead of at runtime
    • 25.05.17: - Rebase to alpine 3.6
    • 07.02.17: - Rebase to alpine 3.5
    • 02.01.17: - Initial Release
    "},{"location":"images/docker-minetest/","title":"minetest","text":""},{"location":"images/docker-minetest/#linuxserverminetest","title":"linuxserver/minetest","text":"

    Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

    "},{"location":"images/docker-minetest/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-minetest/#application-setup","title":"Application Setup","text":"

    You can find the world maps, mods folder and config files in /config/.minetest.

    If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie; if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp

    Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:

    https://hub.docker.com/r/linuxserver/minetest/tags

    "},{"location":"images/docker-minetest/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-minetest/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nminetest:\nimage: lscr.io/linuxserver/minetest:latest\ncontainer_name: minetest\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CLI_ARGS=\"--gameid minetest --port 30000\" #optional\nvolumes:\n- /path/to/data:/config/.minetest\nports:\n- 30000:30000/udp\nrestart: unless-stopped\n
    "},{"location":"images/docker-minetest/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=minetest \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CLI_ARGS=\"--gameid minetest --port 30000\" `#optional` \\\n-p 30000:30000/udp \\\n-v /path/to/data:/config/.minetest \\\n--restart unless-stopped \\\nlscr.io/linuxserver/minetest:latest\n
    "},{"location":"images/docker-minetest/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-minetest/#ports-p","title":"Ports (-p)","text":"Parameter Function 30000/udp Port Minetest listens on."},{"location":"images/docker-minetest/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CLI_ARGS=\"--gameid minetest --port 30000\" Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-minetest/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config/.minetest Where minetest stores config files and maps etc."},{"location":"images/docker-minetest/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-minetest/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-minetest/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-minetest/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-minetest/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-minetest/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it minetest /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minetest
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minetest
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minetest:latest
    "},{"location":"images/docker-minetest/#versions","title":"Versions","text":"
    • 06.08.22: - Update irrlicht deps.
    • 02.05.22: - Allow specifying the advertised port.
    • 17.03.22: - Install forked irrlicht, add zstd.
    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.07.19: - Bugfix to support multiple CLI variables.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 03.06.19: - Adding custom cli vars to options.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 04.03.19: - Rebase to alpine 3.9 to compile 5.0.0 minetest with new build args.
    • 14.01.19: - Add pipeline logic and multi arch.
    • 08.08.18: - Rebase to alpine 3.8, build from latest release tag instead of master.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 08.12.17: - Rebase to alpine 3.7.
    • 30.11.17: - Use cpu core counting routine to speed up build time.
    • 26.05.17: - Rebase to alpine 3.6.
    • 14.02.17: - Rebase to alpine 3.5.
    • 25.11.16: - Rebase to alpine linux, move to main repo.
    • 27.02.16: - Bump to latest version.
    • 19.02.16: - Change port to UDP, thanks to slashopt for pointing this out.
    • 15.02.16: - Make minetest app a service.
    • 01.02.16: - Add lua-socket dependency.
    • 06.11.15: - Initial Release.
    "},{"location":"images/docker-minisatip/","title":"minisatip","text":""},{"location":"images/docker-minisatip/#linuxserverminisatip","title":"linuxserver/minisatip","text":"

    Minisatip is a multi-threaded satip server version 1.2 that runs under Linux and it was tested with DVB-S, DVB-S2, DVB-T, DVB-T2, DVB-C, DVB-C2, ATSC and ISDB-T cards.

    "},{"location":"images/docker-minisatip/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-minisatip/#application-setup","title":"Application Setup","text":"

    Best used in conjunction with tvheadend

    There is no setup per se, other than adding your cards for passthrough.

    You can then use your cards as DVB inputs in apps such as tvheadend.

    "},{"location":"images/docker-minisatip/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-minisatip/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nminisatip:\nimage: lscr.io/linuxserver/minisatip:latest\ncontainer_name: minisatip\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- RUN_OPTS=\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 8875:8875\n- 554:554\n- 1900:1900/udp\ndevices:\n- /dev/dvb:/dev/dvb\nrestart: unless-stopped\n
    "},{"location":"images/docker-minisatip/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=minisatip \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e RUN_OPTS= \\\n-p 8875:8875 \\\n-p 554:554 \\\n-p 1900:1900/udp \\\n-v /path/to/appdata/config:/config \\\n--device /dev/dvb:/dev/dvb \\\n--restart unless-stopped \\\nlscr.io/linuxserver/minisatip:latest\n
    "},{"location":"images/docker-minisatip/#additional-runtime-parameters","title":"Additional runtime parameters","text":"

    In some cases it might be necessary to start minisatip with additional parameters, for example to configure a unicable LNB. Add the parameters you need and restart the container. Be sure to have the right parameters set as adding the wrong once might lead to the container not starting correctly. For a list of minisatip parameters visit Minisatip page.

    "},{"location":"images/docker-minisatip/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-minisatip/#ports-p","title":"Ports (-p)","text":"Parameter Function 8875 Status Page WebUI 554 RTSP Port 1900/udp App Discovery"},{"location":"images/docker-minisatip/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Specify specific run params for minisatip"},{"location":"images/docker-minisatip/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files and minisatip data"},{"location":"images/docker-minisatip/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dvb For passing through Tv-cards"},{"location":"images/docker-minisatip/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-minisatip/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-minisatip/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-minisatip/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-minisatip/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-minisatip/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it minisatip /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f minisatip
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minisatip
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minisatip:latest
    "},{"location":"images/docker-minisatip/#versions","title":"Versions","text":"
    • 12.11.22: - Rebasing to alpine 3.137, upgrading to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 20.02.19: - Fix run options.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 28.08.18: - Rebase to Alpine 3.8.
    • 13.12.17: - Rebase to Alpine 3.7.
    • 28.05.17: - Rebase to Alpine 3.6.
    • 08.02.17: - Rebase to Alpine 3.5 and only compile libs in dvb-apps.
    • 14.10.16: - Add version layer information.
    • 18.09.16: - Add support for Common Interface.
    • 11.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 15.08.16: - Initial Release.
    "},{"location":"images/docker-mstream/","title":"mstream","text":""},{"location":"images/docker-mstream/#linuxservermstream","title":"linuxserver/mstream","text":"

    mstream is a personal music streaming server. You can use mStream to stream your music from your home computer to any device, anywhere. There are mobile apps available for both Android and iPhone.

    "},{"location":"images/docker-mstream/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-mstream/#application-setup","title":"Application Setup","text":"

    Access the webui at http://<your-ip>:3000

    Settings are adjusted through the web ui or via editing of config.json. For more information check out Mstream.

    "},{"location":"images/docker-mstream/#important-notice","title":"IMPORTANT NOTICE:","text":"

    mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json. Therefore, the environment variables USER, PASSWORD and USE_JSON are deprecated.

    v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5.

    "},{"location":"images/docker-mstream/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-mstream/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmstream:\nimage: lscr.io/linuxserver/mstream:latest\ncontainer_name: mstream\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/music:/music\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-mstream/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=mstream \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/data:/config \\\n-v /path/to/music:/music \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mstream:latest\n
    "},{"location":"images/docker-mstream/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mstream/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 The port for the mStream webinterface"},{"location":"images/docker-mstream/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London"},{"location":"images/docker-mstream/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config mStream config /music Music location"},{"location":"images/docker-mstream/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mstream/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mstream/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mstream/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mstream/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mstream/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mstream /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mstream
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mstream
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mstream:latest
    "},{"location":"images/docker-mstream/#versions","title":"Versions","text":"
    • 05.04.22: - Move sync folder to /config.
    • 02.04.22: - Rebase to alpine 3.15. Fix ffmpeg download.
    • 17.05.21: - Deprecating the env vars USER, PASSWORD and USE_JSON as mStream v5 requires the use of config.json.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Inital Release
    "},{"location":"images/docker-musicbrainz/","title":"musicbrainz","text":""},{"location":"images/docker-musicbrainz/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-musicbrainz/#linuxservermusicbrainz","title":"linuxserver/musicbrainz","text":"

    MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.

    "},{"location":"images/docker-musicbrainz/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-musicbrainz/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container.

    "},{"location":"images/docker-musicbrainz/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nmusicbrainz:\nimage: lscr.io/linuxserver/musicbrainz\ncontainer_name: musicbrainz\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- BRAINZCODE=<code from MusicBrainz>\n- WEBADDRESS=<ip of host>\n- NPROC=<parameter> #optional\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/appdata/config>:/data\nports:\n- 5000:5000\nrestart: unless-stopped\n
    "},{"location":"images/docker-musicbrainz/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=musicbrainz \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e BRAINZCODE=<code from MusicBrainz> \\\n  -e WEBADDRESS=<ip of host> \\\n  -e NPROC=<parameter> `#optional` \\\n  -p 5000:5000 \\\n  -v </path/to/appdata/config>:/config \\\n  -v </path/to/appdata/config>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/musicbrainz\n
    "},{"location":"images/docker-musicbrainz/#parameters","title":"Parameters","text":"

    Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    Parameter Function -p 5000 WebUI -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e BRAINZCODE=<code from MusicBrainz> To enter MusicBrainz code. See Setting up the application -e WEBADDRESS=<ip of host> To set ip for host to allow css to render properly, DO NOT ENTER PORT NUMBER. -e NPROC=<parameter> To set number of proceses, defaults to 5 if unset. -v /config Config files for musicbrainz. -v /data Data files for musicbrainz."},{"location":"images/docker-musicbrainz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-musicbrainz/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-musicbrainz/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n

    "},{"location":"images/docker-musicbrainz/#application-setup","title":"Application Setup","text":"
    • For all updates you should pull the latest image, clear all files and folders in /config and /data and reinitiate the database import by (re)starting the docker. We do not officially support upgrading this container in place with existing data sets.

    • If you did not set WEBADDRESS env variable, then AFTER iniatilisation is complete you will need to edit the line sub WEB_SERVER { \"localhost:5000\" } in file /config/DBDefs.pm changing localhost to the ip of your host, this is to allow css to display properly

    • You must register here to receive a MusicBrainz code to allow you to receive database updates, it is free. Get Code here.

    • The initial import and setup of the database can take quite a long time, dependant on your download speed etc, be patient and don't restart the container before it's complete.
    • It appears there are issues with unraid and using /mnt/user/cache/appdata instead of /mnt/cache/appdata, use /mnt/cache/appdata.
    "},{"location":"images/docker-musicbrainz/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-musicbrainz/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running: docker exec -it musicbrainz /bin/bash
    • To monitor the logs of the container in realtime: docker logs -f musicbrainz
    • container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' musicbrainz
    • image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/musicbrainz
    "},{"location":"images/docker-musicbrainz/#updating-info","title":"Updating Info","text":"

    Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the Application Setup section above to see if it is recommended for the image.

    Below are the instructions for updating containers:

    "},{"location":"images/docker-musicbrainz/#via-docker-compose","title":"Via Docker Compose","text":"
    • Update all images: docker-compose pull
    • or update a single image: docker-compose pull musicbrainz
    • Let compose update all containers as necessary: docker-compose up -d
    • or update a single container: docker-compose up -d musicbrainz
    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-musicbrainz/#via-docker-run","title":"Via Docker Run","text":"
    • Update the image: docker pull lscr.io/linuxserver/musicbrainz
    • Stop the running container: docker stop musicbrainz
    • Delete the container: docker rm musicbrainz
    • Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)
    • You can also remove the old dangling images: docker image prune
    "},{"location":"images/docker-musicbrainz/#via-watchtower-auto-updater-only-use-if-you-dont-remember-the-original-parameters","title":"Via Watchtower auto-updater (only use if you don't remember the original parameters)","text":"
    • Pull the latest image at its tag and replace it with the same env variables in one run:
      docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once musicbrainz\n
    • You can also remove the old dangling images: docker image prune

    Note: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using Docker Compose.

    "},{"location":"images/docker-musicbrainz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"
    • We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
    "},{"location":"images/docker-musicbrainz/#building-locally","title":"Building locally","text":"

    If you want to make local modifications to these images for development purposes or just to customize the logic:

    git clone https://github.com/linuxserver/docker-musicbrainz.git\ncd docker-musicbrainz\ndocker build \\\n  --no-cache \\\n  --pull \\\n  -t lscr.io/linuxserver/musicbrainz:latest .\n

    The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

    docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

    Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

    "},{"location":"images/docker-musicbrainz/#versions","title":"Versions","text":"
    • 23.02.21: - Deprecate image as no one stepped up to take over as maintainer.
    • 03.10.20: - Rebase to alpine 3.12, add gettext and move to nodejs-current.
    • 17.05.19: - Update DBDefs.pm to schema 25 database.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Revert to alpine 3.8 to fix incompatibilities with frontend build tools.
    • 19.02.19: - Multi Arch and add pipeline logic, rebase to Alpine 3.9
    • 22.08.18: - Bump server version 2018-08-14.
    • 30.06.18: - Bump server version 2018-06-30.
    • 01.06.18: - Bump server version 2018-05-30 , simplify sed and use yarn instead of npm.
    • 14.05.18: - Bump server version 2018-05-09.
    • 26.04.18: - Bump server version 2018-04-23.
    • 09.02.18: - Bump server version 2018-02-09.
    • 24.01.18: - Bump server version 2018-01-24.
    • 10.01.18: - Bump server version 2018-01-10.
    • 31.11.17: - Bump server version 2017-12-21.
    • 30.11.17: - Add NPROC variable to allow number of processes to be set.
    • 30.11.17: - Fix linting recommendations.
    • 30.11.17: - Remove socket on startup if exists (thanks wtf911) re.
    • 24.11.17: - Remove catalyst side bar on new installs.
    • 31.10.17: - Bump server version 2017-10-31.
    • 20.09.17: - Bump server version 2017-09-18.
    • 06.09.17: - Bump server version 2017-09-04.
    • 19.07.17: - Bump server version 2017-07-17.
    • 21.06.17: - Bump server version 2017-06-19.
    • 26.05.17: - Fix later build of postgres using /run instead of /var/run.
    • 26.05.17: - Rebase to alpine 3.6.
    • 15.05.17: - Schema 24 update, recommend full rebuild with new config.
    • 15.04.17: - Bump server version 2017-04-10.
    • 04.04.17: - Bump server version 2017-03-27.
    • 15.03.17: - Bump server version 2017-03-13.
    • 04.03.17: - Bump server version and use nginx to serve web pages.
    • 06.02.17: - Rebase to alpine 3.5.
    • 16.12.16: - Rebase to alpine linux, entailing almost complete rewrite.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Fix umask.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README, move to main repository.
    • 20.07.16: - Restructure of docker file for clarity, add maxworkers variable in conjunction with starlet, for parallel requests in multi-core setups, thanks to user baoshan.
    • 03.06.16: - Complete rewrite due to schema change. Rebased back to 14.04 direct Using S6 overaly.
    • 21.03.16: - Bump to latest server release.
    • 16.03.16: - Bump to latest server release.
    • 26.02.16: - Bump to latest server release.
    • 08.02.16: - Switch to PPA version for redis.
    • 03.01.16: - Remove d/l of sitemaps file, missing from last 2 db dumps, move fetch of db/dump higher up initialise routine to allow easier resume of broken downloads.
    • 15.12.15: - Per latest musicbrainz blog, switched to production branch,latest stable code is now production branch in place of master.
    • 10.12.15: - Initial release date.
    "},{"location":"images/docker-muximux/","title":"muximux","text":""},{"location":"images/docker-muximux/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-muximux/#linuxservermuximux","title":"linuxserver/muximux","text":"

    Muximux is a lightweight portal to view & manage your HTPC apps without having to run anything more than a PHP enabled webserver. With Muximux you don't need to keep multiple tabs open, or bookmark the URL to all of your apps.

    "},{"location":"images/docker-muximux/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-muximux/#application-setup","title":"Application Setup","text":"

    Find the web interface at <your-ip>:80 , set apps you wish to use with muximux via the webui. More info:- Muximux

    "},{"location":"images/docker-muximux/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-muximux/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmuximux:\nimage: lscr.io/linuxserver/muximux:latest\ncontainer_name: muximux\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-muximux/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=muximux \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/muximux:latest\n
    "},{"location":"images/docker-muximux/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-muximux/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-muximux/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-muximux/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where muximux should store its files."},{"location":"images/docker-muximux/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-muximux/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-muximux/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-muximux/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-muximux/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-muximux/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it muximux /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f muximux
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' muximux
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/muximux:latest
    "},{"location":"images/docker-muximux/#versions","title":"Versions","text":"
    • 21.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 13.09.18: - Rebase to alpine 3.8.
    • 09.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 12.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 09.09.16: - Add badges to README.
    • 22.02.16: - Initial release date.
    "},{"location":"images/docker-mylar/","title":"mylar","text":""},{"location":"images/docker-mylar/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-mylar/#linuxservermylar","title":"linuxserver/mylar","text":"

    Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.

    "},{"location":"images/docker-mylar/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-mylar/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-mylar/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nmylar:\nimage: lscr.io/linuxserver/mylar\ncontainer_name: mylar\nenvironment:\n- PUID=1000\n- PGID=1000\nvolumes:\n- <path to data>:/config\n- <comics-folder>:/comics\n- <downloads-folder>:/downloads\nports:\n- 8090:8090\nrestart: unless-stopped\n
    "},{"location":"images/docker-mylar/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=mylar \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -p 8090:8090 \\\n  -v <path to data>:/config \\\n  -v <comics-folder>:/comics \\\n  -v <downloads-folder>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/mylar\n
    "},{"location":"images/docker-mylar/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mylar/#ports-p","title":"Ports (-p)","text":"Parameter Function 8090 WebUI"},{"location":"images/docker-mylar/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"images/docker-mylar/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder."},{"location":"images/docker-mylar/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mylar/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mylar/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mylar/#application-setup","title":"Application Setup","text":"

    THIS IMAGE IS DEPRECATED. Please migrate to Mylar3.

    The web ui for settings etc, is on <your-ip>:8090 For more detailed setup refer Mylar.

    "},{"location":"images/docker-mylar/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mylar/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mylar /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar
    "},{"location":"images/docker-mylar/#versions","title":"Versions","text":"
    • 21.12.20: - Deprecated. Please migrate to Mylar3.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Re-install requests pip package to downgrade urllib version suitable for mylar.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Pipeline logic and multi arch.
    • 17.08.18: - Rebase to alpine 3.8.
    • 06.07.18: - Add html5lib python package.
    • 14.06.18: - Add requests python package.
    • 12.12.17: - Rebase to alpine 3.7.
    • 21.07.17: - Internal git pull instead of at runtime.
    • 25.05.17: - Rebase to alpine 3.6.
    • 19.02.17: - Use quiet option for cleaner console log, app logs to file anyways.
    • 07.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 08.08.16: - Rebase to alpine linux.
    • 26.01.16: - Initial release.
    "},{"location":"images/docker-mylar3/","title":"mylar3","text":""},{"location":"images/docker-mylar3/#linuxservermylar3","title":"linuxserver/mylar3","text":"

    Mylar3 is an automated Comic Book downloader (cbr/cbz) for use with NZB and torrents written in python. It supports SABnzbd, NZBGET, and many torrent clients in addition to DDL.

    "},{"location":"images/docker-mylar3/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-mylar3/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Mylar3 releases nightly \u2705 Commits to Mylar3 python3-dev branch"},{"location":"images/docker-mylar3/#application-setup","title":"Application Setup","text":"

    The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3.

    "},{"location":"images/docker-mylar3/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-mylar3/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmylar3:\nimage: lscr.io/linuxserver/mylar3:latest\ncontainer_name: mylar3\nenvironment:\n- PUID=1000\n- PGID=1000\nvolumes:\n- /path/to/data:/config\n- /path/to/comics:/comics\n- /path/to/downloads:/downloads\nports:\n- 8090:8090\nrestart: unless-stopped\n
    "},{"location":"images/docker-mylar3/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=mylar3 \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-p 8090:8090 \\\n-v /path/to/data:/config \\\n-v /path/to/comics:/comics \\\n-v /path/to/downloads:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mylar3:latest\n
    "},{"location":"images/docker-mylar3/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mylar3/#ports-p","title":"Ports (-p)","text":"Parameter Function 8090 WebUI"},{"location":"images/docker-mylar3/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"images/docker-mylar3/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder."},{"location":"images/docker-mylar3/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-mylar3/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mylar3/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mylar3/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mylar3/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mylar3/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mylar3 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mylar3
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar3
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar3:latest
    "},{"location":"images/docker-mylar3/#versions","title":"Versions","text":"
    • 12.10.22: - Rebase to alpine 3.16 and upgrade to s6v3.
    • 01.02.22: - Rebase to alpine 3.15.
    • 02.11.21: - Rebase to alpine 3.14. Remove pathlib.py.
    • 25.05.21: - Add libwebp support.
    • 17.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 03.01.21: - Output mylar log to docker log.
    • 21.12.20: - Release nightly tag based on commits to upstream python3-dev branch.
    • 28.09.20: - Initial release.
    "},{"location":"images/docker-mysql-workbench/","title":"mysql-workbench","text":""},{"location":"images/docker-mysql-workbench/#linuxservermysql-workbench","title":"linuxserver/mysql-workbench","text":"

    MySQL Workbench is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.

    "},{"location":"images/docker-mysql-workbench/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-mysql-workbench/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-mysql-workbench/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-mysql-workbench/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nmysql-workbench:\nimage: lscr.io/linuxserver/mysql-workbench:latest\ncontainer_name: mysql-workbench\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\ncap_add:\n- IPC_LOCK\nrestart: unless-stopped\n
    "},{"location":"images/docker-mysql-workbench/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=mysql-workbench \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--cap-add=\"IPC_LOCK\" \\\n--restart unless-stopped \\\nlscr.io/linuxserver/mysql-workbench:latest\n
    "},{"location":"images/docker-mysql-workbench/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-mysql-workbench/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Mysql Workbench desktop gui."},{"location":"images/docker-mysql-workbench/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-mysql-workbench/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings."},{"location":"images/docker-mysql-workbench/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --cap-add= Required for keyring functionality"},{"location":"images/docker-mysql-workbench/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-mysql-workbench/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-mysql-workbench/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-mysql-workbench/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-mysql-workbench/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it mysql-workbench /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f mysql-workbench
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mysql-workbench
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mysql-workbench:latest
    "},{"location":"images/docker-mysql-workbench/#versions","title":"Versions","text":"
    • 15.09.22: - Migrate to s6v3.
    • 26.07.22: - Rebase on jammy.
    • 20.04.21: - Rebase on focal.
    • 18.01.21: - Update libpython dependency.
    • 26.03.20: - Initial release.
    "},{"location":"images/docker-nano-discord-bot/","title":"nano-discord-bot","text":""},{"location":"images/docker-nano-discord-bot/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-nano-discord-bot/#linuxservernano-discord-bot","title":"linuxserver/nano-discord-bot","text":"

    Nano-discord-bot - A bot used to hook into a self hosted Nano RPC endpoint and discord server to Distribute funds from a faucet account.

    "},{"location":"images/docker-nano-discord-bot/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-nano-discord-bot/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-nano-discord-bot/#docker","title":"docker","text":"
    docker create \\\n  --name=nano-discord-bot \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ \\\n  -e RPC_URL=https://nano.linuxserver.io:7077 \\\n  -e FAUCET_KEY=XXXXXXXXXXXXX \\\n  -e DISCORD_KEY=XXXXXXXXXXXXX \\\n  -e FAUCET_AMOUNT=\"1000\" \\\n  -v /path/to/data:/config \\\n  --restart unless-stopped \\\n  lsiodev/nano-discord-bot\n
    "},{"location":"images/docker-nano-discord-bot/#docker-compose","title":"docker-compose","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nnano-discord-bot:\nimage: lsiodev/nano-discord-bot\ncontainer_name: nano-discord-bot\nenvironment:\n- PUID=1000\n- PGID=1000\n- WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/\n- RPC_URL=https://nano.linuxserver.io:7077\n- FAUCET_KEY=XXXXXXXXXXXXX\n- DISCORD_KEY=XXXXXXXXXXXXX\n- FAUCET_AMOUNT=\"1000\"\nvolumes:\n- /path/to/data:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-nano-discord-bot/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nano-discord-bot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-nano-discord-bot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ Hosted wallet endpoint to use. RPC_URL=https://nano.linuxserver.io:7077 RPC endpoint to publish blocks to and ingest account information. FAUCET_KEY=XXXXXXXXXXXXX The private key for your faucet account. DISCORD_KEY=XXXXXXXXXXXXX Discord api key for the bot. FAUCET_AMOUNT=\"1000\" Amount to distribute to individual Discord users in Nano."},{"location":"images/docker-nano-discord-bot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and Radarr configs"},{"location":"images/docker-nano-discord-bot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nano-discord-bot/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nano-discord-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nano-discord-bot/#application-setup","title":"Application Setup","text":"

    With the proper environment variables passed to this container it will automatically reach out to your Nano RPC server and Discord Server. More about setting up a hosted Nano network here .

    "},{"location":"images/docker-nano-discord-bot/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

    "},{"location":"images/docker-nano-discord-bot/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nano-discord-bot /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-discord-bot
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-discord-bot
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lsiodev/nano-discord-bot
    "},{"location":"images/docker-nano-discord-bot/#versions","title":"Versions","text":"
    • 25.05.20: - Initial Release.
    "},{"location":"images/docker-nano-wallet/","title":"nano-wallet","text":""},{"location":"images/docker-nano-wallet/#linuxservernano-wallet","title":"linuxserver/nano-wallet","text":"

    Nano-wallet is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    This container is a simple nginx wrapper for the light wallet located here. You will need to pass a valid RPC host when accessing this container.

    "},{"location":"images/docker-nano-wallet/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nano-wallet/#application-setup","title":"Application Setup","text":"

    This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information.

    Simply access the container at the URL:

    http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT

    "},{"location":"images/docker-nano-wallet/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nano-wallet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnano-wallet:\nimage: lscr.io/linuxserver/nano-wallet:latest\ncontainer_name: nano-wallet\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-nano-wallet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nano-wallet \\\n-p 80:80 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nano-wallet:latest\n
    "},{"location":"images/docker-nano-wallet/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nano-wallet/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Webserver port"},{"location":"images/docker-nano-wallet/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"images/docker-nano-wallet/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-nano-wallet/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nano-wallet/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nano-wallet/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nano-wallet/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nano-wallet/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nano-wallet /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano-wallet
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-wallet
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano-wallet:latest
    "},{"location":"images/docker-nano-wallet/#versions","title":"Versions","text":"
    • 01.06.20: - Rebasing to alpine 3.12.
    • 23.05.20: - Initial Release.
    "},{"location":"images/docker-nano/","title":"nano","text":""},{"location":"images/docker-nano/#linuxservernano","title":"linuxserver/nano","text":"

    Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

    "},{"location":"images/docker-nano/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-nano/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Nano releases beta \u2705 Beta Nano releases"},{"location":"images/docker-nano/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-nano/#your-genesis-account","title":"Your Genesis account","text":"

    By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000, this should obviously only ever be used for testing purposes. Before you run your node you should use a script baked into this image to determine your private key and required environment variables:

    docker run --rm --entrypoint /genesis.sh linuxserver/nano\nGenerating Genesis block\n!!!!!!! ACCOUNT INFO SAVE THIS INFORMATION IT WILL NOT BE SHOWN AGAIN !!!!!!!!\nPrivate Key: CD4CD6B1E5523D4B5AEDD2B1E5A447C6C6797E729A531A95F9AD7937FC7CD9EA\nPublic Key:  2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D\nAccount:     nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nContainer Environment Values:\n -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\\n -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\\n -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\\n -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\\n

    These environment variables will be used for all of the peers in your payment network, but if you are running what you would consider a public or live network never share your private key even if you have drained the funds from that account it can be potentionally used to create valid forks. Even Better, you should never even trust our Docker image for generating a private key and open block. Do it on an airgapped machine and keep it on a paper wallet.

    "},{"location":"images/docker-nano/#rpc-proxy-settings","title":"RPC Proxy settings","text":"

    By default this container will enable RPC control and publish a custom service that acts as an RPC firewall giving you the ability to whitelist specific RPC calls and overide/add default values.

    The default proxy config is stored in /config/rpc-proxy.json:

    {\n  \"port\":3000,\n  \"httpsport\":3001,\n  \"rpchost\":\"127.0.0.1\",\n  \"rpcport\":7076,\n  \"certfile\":\"/config/ssl/cert.crt\",\n  \"keyfile\":\"/config/ssl/cert.key\",\n  \"whitelist\":[\n    \"account_info\",\n    \"account_history\",\n    \"block_count\",\n    \"block_info\",\n    \"pending\",\n    \"process\"\n  ],\n  \"overrides\":{\n    \"account-history\":{\n      \"count\":\"64\"\n    },\n    \"pending\":{\n      \"count\":\"8\"\n    }\n  }\n}\n

    This should be a minimal amount of RPC access needed to run a local light wallet against this endpoint. If you plan on having your network users only run clientside light wallets (local blake2b block generation and block process call publishing) you should publically publish this port for access for both port 7076 and 7077. For functional light wallets on Https endpoints we will generate a self signed cert/key combo but you should add the ones associated with your domain. This will allow yours and other https hosted light wallets to hit your RPC endpoint clientside from the users web browser.

    Outside of potential https tunneling and actual object parsing (will remove duplicate keys) this is not a conventional API, it simply acts as a firewall and will send and return data just like a local RPC server would. The goal is to be compatible with any existing Nano software if the developers decide to add the ability to connect to alternative network endpoints.

    Our Proxy has not been audited by any security team and is provided as is, though we make the best effort to keep it simple and secure

    "},{"location":"images/docker-nano/#node-configuration-via-environment","title":"Node configuration via environment","text":"

    Before you get started please review the configuration docs here

    We will pass the CLI_OPTIONS to the node, here is a run command example:

    -e CLI_OPTIONS='--config node.preconfigured_peers=[\"peering.yourhost.com\",\"peering.yourhost2.com\"] \\\n                --config node.enable_voting=true'\n

    There are many options to know here to run an actual live node especially peering and voting, again please review the docs if you plan to run something outside of a local setup.

    "},{"location":"images/docker-nano/#quickstart-guide","title":"Quickstart Guide","text":"

    Here we are going to cover the bare minimum commands needed to spinup a local payment network and wallet.

    First spinup your containers:

    docker run -d \\\n--name node \\\n-e CLI_OPTIONS='--config node.enable_voting=true' \\\n-p 7076:3000 \\\n--restart unless-stopped \\\nlinuxserver/nano\n
    docker run -d \\\n--name=wallet \\\n-p 80:80 \\\n--restart unless-stopped \\\nlinuxserver/nano-wallet\n
    Then unlock the Genesis funds on the local node to allow it to confirm transactions:
    docker exec -it node bash\nroot@f1df092971f0:/# curl -d '{ \"action\": \"wallet_create\" }' localhost:7076\n{\n    \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\"\n}\nroot@f1df092971f0:/# curl -d '{ \"action\": \"wallet_add\", \"wallet\": \"A3D63F1B28AC68BCD9E0FF74278C7984A36841C803EF1A81DF92BCD6E3BB18F9\", \"key\": \"0000000000000000000000000000000000000000000000000000000000000000\" }' localhost:7076\n{\n    \"account\": \"nano_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc\"\n}\n

    Here we are using the default private key of 0000000000000000000000000000000000000000000000000000000000000000 for the image. Navigate to http://localhost/#/localhost and enter this key. You should be greeted by the genesis account wallet with 340.28 Million Nano.

    From here you can generate new wallets from the home screen and send/receive funds on your local network. Now you will be running an insecure centralized network with a single voting representative and a zero security private key using the commands above. To spinup a standard private or even public network you should read up on Nano's documentation HERE and continue reading the network design section below.

    "},{"location":"images/docker-nano/#network-design","title":"Network design","text":"

    There are 4 main concepts to grasp from a network standpoint as far as types of endpoints. Before we get started here is a basic network diagram:

    "},{"location":"images/docker-nano/#principle-nodes-and-voting-representatives","title":"Principle nodes and voting representatives","text":"

    Principle nodes are network representatives with the ability to vote due to having a certain threshold of funds unlocked on that node or pointed to that unlocked address. These nodes should be as airgapped as possible while still being an active 24/7 peer of the network. From a tecnical perspective this is a node with an account private key that either has the funds it needs itself or enough users have pointed their accounts to it as a representative. In a live and secure configuration to protect the funds of this account you would use an inactive private key account with the funds in it and locally sign a change of representative block to point to the always online representative.

    These nodes should never process external RPC calls even on a local network, the same rules go for any node with a local unlocked wallet.

    Keep in mind the key to the security of the network is that 51% of the funds are pointed to trusted representatives that will generally not argue about chain forks.

    In most deployments the best bet is to heavily centralize your voting nodes, this is unless you are intentionally trying to build a distributed ledger and security model like the main Nano live net. Achieving that will be a long and difficult task.

    "},{"location":"images/docker-nano/#network-peers","title":"Network peers","text":"

    To a normal user simply transacting on the network using off the shelf tools like a web wallet and web based block explorers is generally all that is required. They get a number in a ledger somewhere and are able to locally sign and publish blocks using their private key using your published RPC endpoints.

    For advanced users and just to generally make the network more robust, network operators should promote people running their own nodes. Using this image a network peer simply needs to run a docker run command with your pre-configured variables. IE given the generation example from above in the Your Genesis account section:

    docker create \\\n  --name=nano \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e PEER_HOST=peering.mydomain.com \\\n  -e LIVE_GENESIS_PUB=2D057DF2EB09E918D3F95B5FCA69A5FD3EA406EF7D1810106324CD7A99FAA32D \\\n  -e LIVE_GENESIS_ACCOUNT=nano_1da7hqsgp4hb55bzkptzsbntdzbyni5gyzar41a88b8fhcezoasfjkgmyk5y \\\n  -e LIVE_GENESIS_WORK=7fd88e48684600b7 \\\n  -e LIVE_GENESIS_SIG=D1DF3A64BB43C131944401632215569A40AAE858ACF6CB59D5C77070E69DBF6435D93807877628A8B142DBF1AC4C562CD2F4CEBEB7D15486BDB7494A6146E007 \\\n  -p 8075:8075 \\\n  -p 7076:3000 \\\n  -p 7077:3001 \\\n  -v /path/to/data:/config \\\n  --restart unless-stopped \\\n  linuxserver/nano\n

    When the container spins up it will reach out to the node to bootstrap it's local ledger from peering.mydomain.com . This node once fully synced will be able to run local RPC commands to plug into a wallet and default Nano node wallet commands for automated pocketing of transactions etc. It will also get a list of other peers on the network from it's initial network peering and start participating in your distributed cryptocurrency network.

    "},{"location":"images/docker-nano/#public-rpc-endpoints","title":"Public RPC endpoints","text":"

    The key to users going to a webpage and managing the funds on your network is the ability to get blockchain information and publish new blocks to theirs. As mentioned earlier we bundle a basic firewall with a core set of RPC functions whitelisted that should be safe to expose publically.

    From a network design perspective these nodes should be purely what you would consider client peers and never have any wallets registered or private keys stored on them. Also for redundancy optmimally these peers should be run in a cluster behind a load balancer. For standard nodes you are building out a large P2P network, but in the case of the RPC endpoint and specifically the URL the end user is going to pass when accessing their wallet it is up to you to make that resilient.

    "},{"location":"images/docker-nano/#clientside-javascript-wallet","title":"Clientside javascript wallet","text":"

    Currently we publish a pure javascript clientside wallet located here:

    https://github.com/linuxserver/nano-wallet

    It is designed to be run 100% clientside in any web browser and use public RPC endpoints to hook into any network and conduct transactions by locally signing then publishing the result. This can be hosted locally with any simple webserver and pointed to a locally run peer, but for full functionality we reccomend providing a public Https URL with these files along with plugging in legitamite SSL certificates into your RPC endpoints running on 7077.

    "},{"location":"images/docker-nano/#running-a-node-on-the-linuxserver-network","title":"Running a node on the LinuxServer network","text":"

    We maintain our own network which users can get funds to transact on from our Discord server. If you would like to run a node on our network here is our Docker run command:

    docker create \\\n  --name=lsio-node \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e PEER_HOST=peering.linuxserver.io \\\n  -e LIVE_GENESIS_PUB=79F2E157B5667F1C8B6CCB6DF691DAC032B85DEC39E231D29976DCED05F5B1BE \\\n  -e LIVE_GENESIS_ACCOUNT=nano_1yhkw7ducsmz5k7pskufytaxoi3kq3gyrgh489bbkxpwxn4zdefyn4rmrrkk \\\n  -e LIVE_GENESIS_WORK=c51204c6b69384cb \\\n  -e LIVE_GENESIS_SIG=90DDE7B4DC038811180FF5DDE8594F1774542A7AADE3DB71A57AA38A5AED42672E1E8D7ACFAC315BDB0EB5DCB542C610B9C49B2560AE575073855259AF065509 \\\n  -p 8075:8075 \\\n  -p 7076:3000 \\\n  -p 7077:3001 \\\n  -v /path/to/data:/config \\\n  --restart unless-stopped \\\n  linuxserver/nano\n

    "},{"location":"images/docker-nano/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nano/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnano:\nimage: lscr.io/linuxserver/nano:latest\ncontainer_name: nano\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PEER_HOST=localhost #optional\n- LIVE_GENESIS_PUB=GENESIS_PUBLIC #optional\n- LIVE_GENESIS_ACCOUNT=nano_xxxxxx #optional\n- LIVE_GENESIS_WORK=WORK_FOR_BLOCK #optional\n- LIVE_GENESIS_SIG=BLOCK_SIGNATURE #optional\n- CLI_OPTIONS=--config node.enable_voting=true #optional\n- LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z #optional\nvolumes:\n- /path/to/data:/config\nports:\n- 8075:8075\n- 7076:3000\n- 7077:3001\nrestart: unless-stopped\n
    "},{"location":"images/docker-nano/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nano \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PEER_HOST=localhost `#optional` \\\n-e LIVE_GENESIS_PUB=GENESIS_PUBLIC `#optional` \\\n-e LIVE_GENESIS_ACCOUNT=nano_xxxxxx `#optional` \\\n-e LIVE_GENESIS_WORK=WORK_FOR_BLOCK `#optional` \\\n-e LIVE_GENESIS_SIG=BLOCK_SIGNATURE `#optional` \\\n-e CLI_OPTIONS=--config node.enable_voting=true `#optional` \\\n-e LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z `#optional` \\\n-p 8075:8075 \\\n-p 7076:3000 \\\n-p 7077:3001 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nano:latest\n
    "},{"location":"images/docker-nano/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nano/#ports-p","title":"Ports (-p)","text":"Parameter Function 8075 Nano communication port 3000 RPC interface filtered through a proxy 3001 Https RPC interface filtered through a proxy"},{"location":"images/docker-nano/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PEER_HOST=localhost Default peer host (can be overidden with an array by command line options) LIVE_GENESIS_PUB=GENESIS_PUBLIC Genesis block public key LIVE_GENESIS_ACCOUNT=nano_xxxxxx Genesis block account LIVE_GENESIS_WORK=WORK_FOR_BLOCK Genesis block proof of work LIVE_GENESIS_SIG=BLOCK_SIGNATURE Genesis block signature CLI_OPTIONS=--config node.enable_voting=true Node run command cli args LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z HTTP/HTTPS endpoint to download a 7z file with the data.ldb to bootstrap to this node"},{"location":"images/docker-nano/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Main storage for config and blockchain"},{"location":"images/docker-nano/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nano/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nano/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nano/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nano/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nano/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nano /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nano
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano:latest
    "},{"location":"images/docker-nano/#versions","title":"Versions","text":"
    • 02.06.20: - Rebase to Alpine 3.12.
    • 28.05.20: - Add beta tag.
    • 17.05.20: - Initial Release.
    "},{"location":"images/docker-netbootxyz/","title":"netbootxyz","text":""},{"location":"images/docker-netbootxyz/#linuxservernetbootxyz","title":"linuxserver/netbootxyz","text":"

    Netbootxyz is a way to PXE boot various operating system installers or utilities from one place within the BIOS without the need of having to go retrieve the media to run the tool. iPXE is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.

    "},{"location":"images/docker-netbootxyz/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-netbootxyz/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Web application for full self hosting tftp \u2705 TFTP server only with NETBOOT.XYZ boot files"},{"location":"images/docker-netbootxyz/#application-setup","title":"Application Setup","text":"

    To use this image you need an existing DHCP server where you can set this TFTP server as your DHCP boot destination. This image does not contain a DHCP server nor do we aim to support one in the future. This is simply a TFTP server hosting the latest IPXE kernel builds from netboot.xyz. If you are interested in their project and lack the ability to setup a DHCP server to boot this payload they also have USB stick images you can use available on their downloads page.

    "},{"location":"images/docker-netbootxyz/#router-setup-examples","title":"Router Setup Examples","text":""},{"location":"images/docker-netbootxyz/#pfsense","title":"PFSense","text":"

    Services -> DHCP Server

    Set both the option for \"TFTP Server\" and the options under the Advanced \"Network Booting\" section. * check enable * Next server- IP used for TFTP Server * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    "},{"location":"images/docker-netbootxyz/#opnsense","title":"OPNsense","text":"

    Services -> DHCP Server

    Under the Advanced \"Network Booting\" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

    "},{"location":"images/docker-netbootxyz/#unifi-security-gateway-with-the-controller","title":"Unifi Security Gateway (with the controller)","text":"

    Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe

    "},{"location":"images/docker-netbootxyz/#edgeosvyos","title":"EdgeOS/VyOS","text":"

    Connect via SSH

    configure\nset service dhcp-server use-dnsmasq enable\nset service dns forwarding options \"dhcp-match=set:bios,60,PXEClient:Arch:00000\"\nset service dns forwarding options \"dhcp-boot=tag:bios,netboot.xyz.kpxe,,SERVERIP\"\nset service dns forwarding options \"dhcp-match=set:efi32,60,PXEClient:Arch:00002\"\nset service dns forwarding options \"dhcp-boot=tag:efi32,netboot.xyz.efi,,SERVERIP\"\nset service dns forwarding options \"dhcp-match=set:efi32-1,60,PXEClient:Arch:00006\"\nset service dns forwarding options \"dhcp-boot=tag:efi32-1,netboot.xyz.efi,,SERVERIP\"\nset service dns forwarding options \"dhcp-match=set:efi64,60,PXEClient:Arch:00007\"\nset service dns forwarding options \"dhcp-boot=tag:efi64,netboot.xyz.efi,,SERVERIP\"\nset service dns forwarding options \"dhcp-match=set:efi64-1,60,PXEClient:Arch:00008\"\nset service dns forwarding options \"dhcp-boot=tag:efi64-1,netboot.xyz.efi,,SERVERIP\"\nset service dns forwarding options \"dhcp-match=set:efi64-2,60,PXEClient:Arch:00009\"\nset service dns forwarding options \"dhcp-boot=tag:efi64-2,netboot.xyz.efi,,SERVERIP\"\ncommit; save\n

    "},{"location":"images/docker-netbootxyz/#dd-wrt","title":"DD-WRT","text":"

    Administration -> Services -> Additional DNSMasq Options Set the following lines:

    dhcp-match=set:bios,60,PXEClient:Arch:00000\ndhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP\ndhcp-match=set:efi32,60,PXEClient:Arch:00002\ndhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi32-1,60,PXEClient:Arch:00006\ndhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64,60,PXEClient:Arch:00007\ndhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-1,60,PXEClient:Arch:00008\ndhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-2,60,PXEClient:Arch:00009\ndhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP\n

    "},{"location":"images/docker-netbootxyz/#tomato","title":"Tomato","text":"

    Advanced -> DHCP/DNS -> Dnsmasq Custom configuration Set the following lines:

    dhcp-match=set:bios,60,PXEClient:Arch:00000\ndhcp-boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP\ndhcp-match=set:efi32,60,PXEClient:Arch:00002\ndhcp-boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi32-1,60,PXEClient:Arch:00006\ndhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64,60,PXEClient:Arch:00007\ndhcp-boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-1,60,PXEClient:Arch:00008\ndhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP\ndhcp-match=set:efi64-2,60,PXEClient:Arch:00009\ndhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP\n

    "},{"location":"images/docker-netbootxyz/#openwrt","title":"OpenWRT","text":"
    uci set dhcp.@dnsmasq[0].dhcp_match=set:bios,60,PXEClient:Arch:00000\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:bios,netboot.xyz.kpxe,,YOURSERVERIP\nuci set dhcp.@dnsmasq[0].dhcp_match=set:efi32,60,PXEClient:Arch:00002\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32,netboot.xyz.efi,,YOURSERVERIP\nuci set dhcp.@dnsmasq[0].dhcp_match=set:efi32-1,60,PXEClient:Arch:00006\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi32-1,netboot.xyz.efi,,YOURSERVERIP\nuci set dhcp.@dnsmasq[0].dhcp_match=set:efi64,60,PXEClient:Arch:00007\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64,netboot.xyz.efi,,YOURSERVERIP\nuci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-1,60,PXEClient:Arch:00008\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-1,netboot.xyz.efi,,YOURSERVERIP\nuci set dhcp.@dnsmasq[0].dhcp_match=set:efi64-2,60,PXEClient:Arch:00009\nuci set dhcp.@dnsmasq[0].dhcp_boot=tag:efi64-2,netboot.xyz.efi,,YOURSERVERIP\nuci commit\n/etc/init.d/dnsmasq restart\n
    "},{"location":"images/docker-netbootxyz/#microsoft-server-dhcp","title":"Microsoft Server DHCP","text":"
    • Run the DHCP program
    • Under Scope/Scope Options
    • check option 066 and enter the FQDN or IP of your TFTP boot server
    • check option 067 and enter one of the following bootfile names:
    • Default BIOS file name- netboot.xyz.kpxe
    • UEFI 32 bit file name- netboot.xyz.efi
    • UEFI 64 bit file name- netboot.xyz.efi

    Anything else from a router standpoint is a crapshoot for supporting Dnsmasq options or proprietary PXE boot options, check Google for support (try your exact router model number with 'pxe boot') or look into setting up your own DHCP server in Linux.

    This image also contains netboot.xyz.efi which can be used to boot using UEFI network boot. The UEFI boot and menu will have limited functionality if you choose to use it.

    "},{"location":"images/docker-netbootxyz/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-netbootxyz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnetbootxyz:\nimage: lscr.io/linuxserver/netbootxyz:latest\ncontainer_name: netbootxyz\nenvironment:\n- PUID=1000\n- PGID=1000\n- MENU_VERSION=1.9.9 #optional\n- PORT_RANGE=30000:30010 #optional\n- SUBFOLDER=/ #optional\nvolumes:\n- /path/to/config:/config\n- /path/to/assets:/assets #optional\nports:\n- 3000:3000\n- 69:69/udp\n- 8080:80 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-netbootxyz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=netbootxyz \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e MENU_VERSION=1.9.9 `#optional` \\\n-e PORT_RANGE=30000:30010 `#optional` \\\n-e SUBFOLDER=/ `#optional` \\\n-p 3000:3000 \\\n-p 69:69/udp \\\n-p 8080:80 `#optional` \\\n-v /path/to/config:/config \\\n-v /path/to/assets:/assets `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/netbootxyz:latest\n
    "},{"location":"images/docker-netbootxyz/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-netbootxyz/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web configuration interface. 69/udp TFTP Port. 80 NGINX server for hosting assets."},{"location":"images/docker-netbootxyz/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest) PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia) SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/)"},{"location":"images/docker-netbootxyz/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Storage for boot menu files and web application config /assets Storage for NETBOOT.XYZ bootable assets (live CDs and other files)"},{"location":"images/docker-netbootxyz/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-netbootxyz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-netbootxyz/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-netbootxyz/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-netbootxyz/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-netbootxyz/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it netbootxyz /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbootxyz
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbootxyz
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbootxyz:latest
    "},{"location":"images/docker-netbootxyz/#versions","title":"Versions","text":"
    • 12.10.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 29.04.21: - Rebasing to alpine 3.13, add SUBFOLDER env variable.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 13.12.19: - Swapping latest tag over to webapp stack for management.
    • 10.12.19: - Adding tftp branch to provide tftp only option to latest users.
    • 22.10.19: - Initial release.
    "},{"location":"images/docker-netbox/","title":"netbox","text":""},{"location":"images/docker-netbox/#linuxservernetbox","title":"linuxserver/netbox","text":"

    Netbox is an IP address management (IPAM) and data center infrastructure management (DCIM) tool. Initially conceived by the network engineering team at DigitalOcean, NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.

    "},{"location":"images/docker-netbox/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-netbox/#application-setup","title":"Application Setup","text":"

    Netbox requires a postgres database and a redis instance.

    Access the WebUI at :8000. For more information, check out NetBox."},{"location":"images/docker-netbox/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-netbox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnetbox:\nimage: lscr.io/linuxserver/netbox:latest\ncontainer_name: netbox\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=<TZ>\n- SUPERUSER_EMAIL=<SUPERUSER_EMAIL>\n- SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD>\n- ALLOWED_HOST=<ALLOWED_HOST>\n- DB_NAME=<DB_NAME>\n- DB_USER=<DB_USER>\n- DB_PASSWORD=<DB_PASSWORD>\n- DB_HOST=<DB_HOST>\n- DB_PORT=<DB_PORT>\n- REDIS_HOST=<REDIS_HOST>\n- REDIS_PORT=<REDIS_PORT>\n- REDIS_PASSWORD=<REDIS_PASSWORD>\n- REDIS_DB_TASK=<REDIS_DB_TASK>\n- REDIS_DB_CACHE=<REDIS_DB_CACHE>\n- BASE_PATH=<BASE_PATH> #optional\n- REMOTE_AUTH_ENABLED=<REMOTE_AUTH_ENABLED> #optional\n- REMOTE_AUTH_BACKEND=<REMOTE_AUTH_BACKEND> #optional\n- REMOTE_AUTH_HEADER=<REMOTE_AUTH_HEADER> #optional\n- REMOTE_AUTH_AUTO_CREATE_USER=<REMOTE_AUTH_AUTO_CREATE_USER> #optional\n- REMOTE_AUTH_DEFAULT_GROUPS=<REMOTE_AUTH_DEFAULT_GROUPS> #optional\n- REMOTE_AUTH_DEFAULT_PERMISSIONS=<REMOTE_AUTH_DEFAULT_PERMISSIONS> #optional\nvolumes:\n- <path to data on host>:/config\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-netbox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=netbox \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=<TZ> \\\n-e SUPERUSER_EMAIL=<SUPERUSER_EMAIL> \\\n-e SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD> \\\n-e ALLOWED_HOST=<ALLOWED_HOST> \\\n-e DB_NAME=<DB_NAME> \\\n-e DB_USER=<DB_USER> \\\n-e DB_PASSWORD=<DB_PASSWORD> \\\n-e DB_HOST=<DB_HOST> \\\n-e DB_PORT=<DB_PORT> \\\n-e REDIS_HOST=<REDIS_HOST> \\\n-e REDIS_PORT=<REDIS_PORT> \\\n-e REDIS_PASSWORD=<REDIS_PASSWORD> \\\n-e REDIS_DB_TASK=<REDIS_DB_TASK> \\\n-e REDIS_DB_CACHE=<REDIS_DB_CACHE> \\\n-e BASE_PATH=<BASE_PATH> `#optional` \\\n-e REMOTE_AUTH_ENABLED=<REMOTE_AUTH_ENABLED> `#optional` \\\n-e REMOTE_AUTH_BACKEND=<REMOTE_AUTH_BACKEND> `#optional` \\\n-e REMOTE_AUTH_HEADER=<REMOTE_AUTH_HEADER> `#optional` \\\n-e REMOTE_AUTH_AUTO_CREATE_USER=<REMOTE_AUTH_AUTO_CREATE_USER> `#optional` \\\n-e REMOTE_AUTH_DEFAULT_GROUPS=<REMOTE_AUTH_DEFAULT_GROUPS> `#optional` \\\n-e REMOTE_AUTH_DEFAULT_PERMISSIONS=<REMOTE_AUTH_DEFAULT_PERMISSIONS> `#optional` \\\n-p 8000:8000 \\\n-v <path to data on host>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/netbox:latest\n
    "},{"location":"images/docker-netbox/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-netbox/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 will map the container's port 8000 to port 8000 on the host"},{"location":"images/docker-netbox/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=<TZ> Timezone (i.e., America/New_York) SUPERUSER_EMAIL=<SUPERUSER_EMAIL> Email address for admin account SUPERUSER_PASSWORD=<SUPERUSER_PASSWORD> Password for admin account ALLOWED_HOST=<ALLOWED_HOST> The hostname you will use to access the app (i.e., netbox.example.com) DB_NAME=<DB_NAME> Database name (default: netbox) DB_USER=<DB_USER> Database user DB_PASSWORD=<DB_PASSWORD> Database password DB_HOST=<DB_HOST> Database host (default: postgres) DB_PORT=<DB_PORT> Database port (defaul: 5432) REDIS_HOST=<REDIS_HOST> Redis host (default: redis) REDIS_PORT=<REDIS_PORT> Redis port number (default: 6379) REDIS_PASSWORD=<REDIS_PASSWORD> Redis password (default: none) REDIS_DB_TASK=<REDIS_DB_TASK> Redis database ID for tasks (default: 0) REDIS_DB_CACHE=<REDIS_DB_CACHE> Redis database ID for caching (default: 1) BASE_PATH=<BASE_PATH> The path you will use to access the app (i.e., /netbox, optional, default: none) REMOTE_AUTH_ENABLED=<REMOTE_AUTH_ENABLED> Enable remote authentication (optional, default: False) REMOTE_AUTH_BACKEND=<REMOTE_AUTH_BACKEND> Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend) REMOTE_AUTH_HEADER=<REMOTE_AUTH_HEADER> Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER) REMOTE_AUTH_AUTO_CREATE_USER=<REMOTE_AUTH_AUTO_CREATE_USER> If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False) REMOTE_AUTH_DEFAULT_GROUPS=<REMOTE_AUTH_DEFAULT_GROUPS> The list of groups to assign a new user account when created using remote authentication (optional, default: []) REMOTE_AUTH_DEFAULT_PERMISSIONS=<REMOTE_AUTH_DEFAULT_PERMISSIONS> A mapping of permissions to assign a new user account when created using remote authentication (optional, default: {})"},{"location":"images/docker-netbox/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config config directory volume mapping"},{"location":"images/docker-netbox/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-netbox/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-netbox/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-netbox/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-netbox/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-netbox/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it netbox /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f netbox
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbox
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbox:latest
    "},{"location":"images/docker-netbox/#versions","title":"Versions","text":"
    • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 01.08.22: - Remove py3-pillow, add tiff to fix deps.
    • 26.07.22: - Add py3-pillow package back on arm to fix build issue.
    • 10.12.21: - Remove py3-pillow package to fix dependency issue with 3.2.0.
    • 10.12.21: - Rebase to Alpine 3.15.
    • 26.04.21: - Added Redis database environment variables.
    • 03.02.21: - Added remote authentication environment variables.
    • 02.01.21: - Added BASE_PATH environment variable.
    • 23.08.20: - Initial Release.
    "},{"location":"images/docker-nextcloud/","title":"nextcloud","text":""},{"location":"images/docker-nextcloud/#linuxservernextcloud","title":"linuxserver/nextcloud","text":"

    Nextcloud gives you access to all your files wherever you are.

    Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home.

    "},{"location":"images/docker-nextcloud/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nextcloud/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Nextcloud releases"},{"location":"images/docker-nextcloud/#application-setup","title":"Application Setup","text":"

    Access the webui at https://<your-ip>:443, for more information check out Nextcloud.

    Docker image update and recreation of container alone won't update nextcloud version.

    In order to update nextcloud version, you have two options, firstly make sure you are using the latest docker image,then either

    1. Perform the in app gui update.
    2. Use the CLI version by running docker exec -it nextcloud updater.phar (Both of these are described here)

    Note: Both occ and updater.phar can be run without prepending with sudo -u abc php or sudo -u www-data php

    If you are not customizing our default nginx configuration you will need to remove the file:

    /config/nginx/site-confs/default.conf\n
    Then restart the container to replace it with the latest one.

    "},{"location":"images/docker-nextcloud/#collaborative-editing","title":"Collaborative Editing","text":"

    Nextcloud's built-in collaborative editing packages (Collabora/CODE and OnlyOffice) only work on x86_64 systems with glibc, and therefore they are not compatible with our images. You should create separate containers for them and set them up in Nextcloud with their respective connector addons.

    If (auto) installed, those built-in packages may cause instability and should be removed.

    "},{"location":"images/docker-nextcloud/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-nextcloud/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nextcloud/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnextcloud:\nimage: lscr.io/linuxserver/nextcloud:latest\ncontainer_name: nextcloud\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata:/config\n- /path/to/data:/data\nports:\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-nextcloud/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nextcloud \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 443:443 \\\n-v /path/to/appdata:/config \\\n-v /path/to/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nextcloud:latest\n
    "},{"location":"images/docker-nextcloud/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nextcloud/#ports-p","title":"Ports (-p)","text":"Parameter Function 443 WebUI"},{"location":"images/docker-nextcloud/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-nextcloud/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Nextcloud configs. /data Your personal data."},{"location":"images/docker-nextcloud/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nextcloud/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nextcloud/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nextcloud/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nextcloud/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nextcloud/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nextcloud /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nextcloud
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nextcloud
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nextcloud:latest
    "},{"location":"images/docker-nextcloud/#versions","title":"Versions","text":"
    • 10.10.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 30.09.22: - Disabled output_buffering as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html
    • 21.05.22: - Update version check endpoint.
    • 28.04.22: - Increase OPCache interned strings buffered setting to 16.
    • 14.04.22: - Nginx default site config updated for v23 (existing users should delete /config/nginx/site-confs/default.conf and restart the container). Fix LDAP connection.
    • 11.09.21: - Rebasing to alpine 3.14
    • 21.03.21: - Publish php8 tag for testing.
    • 25.02.21: - Nginx default site config updated for v21 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 21.01.21: - Fix php iconv (was breaking the mail addon). If installed, attempt to remove broken CODE Server app during startup.
    • 20.01.21: - Increase php fcgi timeout to prevent 504 Gateway timeout errors (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 16.01.21: - Rebasing to alpine 3.13. Users with issues on 32-bit arm, see this article.
    • 12.08.20: - Various updates to default site config, including added support for webfinger (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 03.06.20: - Rebasing to alpine 3.12
    • 03.06.20: - Add php7-bcmath and php7-fileinfo
    • 31.05.20: - Add aliases for occ and updater.phar
    • 31.03.20: - Allow crontab to be user customized, fix logrotate.
    • 17.01.20: - Updated php.ini defaults and site config, including an optional HSTS directive (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.11.19: - Nginx default site config updated for v17 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 28.10.19: - Change cronjob to run every 5 minutes.
    • 24.10.19: - Nginx default site config updated due to CVE-2019-11043 (existing users should delete /config/nginx/site-confs/default.conf and restart the container).
    • 14.07.19: - Download nextcloud during build time.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 27.02.19: - Updating base nginx config to sync up with v15 requirements.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 28.01.19: - Add pipeline logic and multi arch.
    • 25.01.19: - Add php7-phar for occ upgrades.
    • 05.09.18: - Rebase to alpine 3.8.
    • 11.06.18: - Use latest rather than specific version for initial install.
    • 26.04.18: - Bump default install to 13.0.1.
    • 06.02.18: - Bump default install to 13.0.0.
    • 26.01.18: - Rebase to alpine 3.7, bump default install to 12.0.5.
    • 12.12.17: - Bump default install to 12.0.4, fix continuation lines.
    • 15.10.17: - Sed php.ini for opcache requirements in newer nextcloud versions.
    • 20.09.17: - Bump default install to 12.0.3.
    • 19.08.17: - Bump default install to 12.0.2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 22.05.17: - Update to nextcloud 12.0, adding required dependecies and note about commenting out SAMEORIGIN; line.
    • 03.05.17: - Use community repo of memcache.
    • 07.03.17: - Release into main repository and upgrade to php7 and Alpine 3.5.
    "},{"location":"images/docker-nginx/","title":"nginx","text":""},{"location":"images/docker-nginx/#linuxservernginx","title":"linuxserver/nginx","text":"

    Nginx is a simple webserver with php support. The config files reside in /config for easy user customization.

    "},{"location":"images/docker-nginx/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nginx/#application-setup","title":"Application Setup","text":"

    Add your web files to /config/www for hosting. Modify the nginx, php and site config files under /config as needed Protip: This container is best combined with a sql server, e.g. mariadb

    "},{"location":"images/docker-nginx/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nginx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnginx:\nimage: lscr.io/linuxserver/nginx:latest\ncontainer_name: nginx\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-nginx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nginx \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-p 443:443 \\\n-v </path/to/appdata/config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nginx:latest\n
    "},{"location":"images/docker-nginx/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nginx/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http 443 https"},{"location":"images/docker-nginx/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-nginx/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains your www content and all relevant configuration files."},{"location":"images/docker-nginx/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nginx/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nginx/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nginx/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nginx/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nginx/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nginx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nginx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nginx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nginx:latest
    "},{"location":"images/docker-nginx/#versions","title":"Versions","text":"
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 22.05.22: - Install nginx version from 3.14.
    • 01.07.21: - Rebasing to alpine 3.14.
    • 24.06.21: - Update default nginx conf folder.
    • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
    • 13.02.21: - Remove php7-pecl-imagick (it now installs the full imagemagick with too much crud). Users can install it via this docker mod.
    • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
    • 08.09.20: - Add php7-xsl.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Fix unwanted shutdown of the container.
    • 11.03.20: - Add php7-sodium.
    • 18.02.20: - Add geoip2, suppress lua warning.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 18.12.19: - Add php7-imap and php7-pecl-apcu.
    • 13.11.19: - Add php7-pdo_odbc.
    • 24.10.19: - Add php7-pecl-imagick.
    • 06.08.19: - Add php7-bcmath, ph7-pear, php7-xmlrpc and php7-ftp.
    • 02.08.19: - Add php7-ldap.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.05.19: - Remove default.conf when nginx is upgraded in downstream image.
    • 30.04.19: - Add php-redis.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 02.03.19: - Add php intl and posix modules.
    • 28.02.19: - Add php7-opcache, remove memcached service due to issues on aarch64 (let us know if you need to enable it).
    • 22.02.19: - Rebasing to alpine 3.9.
    • 18.11.18: - Attempt to upgrade packages during build.
    • 28.09.18: - Multi-arch image.
    • 17.08.18: - Rebase to alpine 3.8, inherit nginx.conf from nginx baseimage.
    • 11.05.18: - Add php pgsql support.
    • 19.04.18: - Bind memcached to localhost only, add php7-sqlite3.
    • 05.01.18: - Rebase to alpine 3.7.
    • 08.11.17: - Add php7 soap module.
    • 31.10.17: - Add php7 exif and xmlreader modules.
    • 30.09.17: - Copy additional root files into image.
    • 24.09.17: - Add memcached service.
    • 31.08.17: - Add php7-phar.
    • 14.07.17: - Enable modules dynamically in nginx.conf.
    • 22.06.17: - Add various nginx modules and enable all modules in the default nginx.conf.
    • 05.06.17: - Add php7-bz2.
    • 25.05.17: - Rebase to alpine 3.6.
    • 18.04.17: - Add php7-sockets.
    • 27.02.17: - Rebase to alpine 3.5, update to nginx 1.10.2 and php7.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add badges to README.
    • 05.12.15: - Intial Release.
    "},{"location":"images/docker-ngircd/","title":"ngircd","text":""},{"location":"images/docker-ngircd/#linuxserverngircd","title":"linuxserver/ngircd","text":"

    Ngircd is a free, portable and lightweight Internet Relay Chat server for small or private networks, developed under the GNU General Public License (GPL). It is easy to configure, can cope with dynamic IP addresses, and supports IPv6, SSL-protected connections as well as PAM for authentication. It is written from scratch and not based on the original IRCd.

    "},{"location":"images/docker-ngircd/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ngircd/#application-setup","title":"Application Setup","text":"
    • To setup ngircd you will need to edit /config/ngircd.conf which is created the first time the container is run, edit the file and restart the container to implement any config changes.
    • For information see the ngircd site here.
    "},{"location":"images/docker-ngircd/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-ngircd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nngircd:\nimage: lscr.io/linuxserver/ngircd:latest\ncontainer_name: ngircd\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/ngircd/config:/config\nports:\n- 6667:6667\nrestart: unless-stopped\n
    "},{"location":"images/docker-ngircd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=ngircd \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 6667:6667 \\\n-v /path/to/ngircd/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ngircd:latest\n
    "},{"location":"images/docker-ngircd/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-ngircd/#ports-p","title":"Ports (-p)","text":"Parameter Function 6667 ngircd port"},{"location":"images/docker-ngircd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use e.g. Europe/London"},{"location":"images/docker-ngircd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where ngircd.conf is stored"},{"location":"images/docker-ngircd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ngircd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-ngircd/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-ngircd/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-ngircd/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-ngircd/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it ngircd /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ngircd
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ngircd
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ngircd:latest
    "},{"location":"images/docker-ngircd/#versions","title":"Versions","text":"
    • 11.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 04.07.19: - Initial release.
    "},{"location":"images/docker-nntp2nntp/","title":"nntp2nntp","text":""},{"location":"images/docker-nntp2nntp/#linuxservernntp2nntp","title":"linuxserver/nntp2nntp","text":"

    Nntp2nntp proxy allow you to use your NNTP Account from multiple systems, each with own user name and password. It fully supports SSL and you can also limit the access to proxy with SSL certificates. nntp2nntp proxy is very simple and pretty fast.

    "},{"location":"images/docker-nntp2nntp/#warning","title":"Warning","text":"

    Whilst we know of no nntp2nntp security issues the upstream code for this project has received no changes since 06.08.15 and is likely abandoned permanently. For this reason we strongly recommend you do not make this application public facing and if you must do so other layers of security and SSL should be considered an absolute bare minimum requirement. We see this proxy being used primarily on a LAN so that all the users NNTP applications can share a common set of internal credentials allowing for central managment of the upstream account e.g change provider, server, thread limits for all applications with one global config change.

    "},{"location":"images/docker-nntp2nntp/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nntp2nntp/#application-setup","title":"Application Setup","text":"

    Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users.

    New user passwords can be created by running the password hash generator

    docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass\n
    entering the desired password and copying the resulting string to the relevant user line in /config/nntp2nntp.conf

    Example with a user called Dave and with a password of password

    Dave    = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8\n

    "},{"location":"images/docker-nntp2nntp/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nntp2nntp/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnntp2nntp:\nimage: lscr.io/linuxserver/nntp2nntp:latest\ncontainer_name: nntp2nntp\nenvironment:\n- PUID=1000\n- PGID=1000\n- PUID=<yourUID>\n- PGID=<yourGID>\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 1563:1563\nrestart: unless-stopped\n
    "},{"location":"images/docker-nntp2nntp/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nntp2nntp \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e PUID=<yourUID> \\\n-e PGID=<yourGID> \\\n-e TZ=Europe/London \\\n-p 1563:1563 \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nntp2nntp:latest\n
    "},{"location":"images/docker-nntp2nntp/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nntp2nntp/#ports-p","title":"Ports (-p)","text":"Parameter Function 1563 will map the container's port 1563 to port 1563 on the host"},{"location":"images/docker-nntp2nntp/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation PUID=<yourUID> specify your UID PGID=<yourGID> specify your GID TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-nntp2nntp/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store config on the docker host"},{"location":"images/docker-nntp2nntp/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nntp2nntp/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nntp2nntp/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nntp2nntp/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nntp2nntp/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nntp2nntp/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nntp2nntp /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nntp2nntp
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nntp2nntp
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nntp2nntp:latest
    "},{"location":"images/docker-nntp2nntp/#versions","title":"Versions","text":"
    • 10.10.22: - Rebase to Alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.04.19: - Multiarch builds and build from Github fork.
    • 15.05.18: - Initial Release.
    "},{"location":"images/docker-nzbget/","title":"nzbget","text":""},{"location":"images/docker-nzbget/#linuxservernzbget","title":"linuxserver/nzbget","text":"

    Nzbget is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources.

    "},{"location":"images/docker-nzbget/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nzbget/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable nzbget releases testing \u2705 nzbget pre-releases"},{"location":"images/docker-nzbget/#application-setup","title":"Application Setup","text":"

    Webui can be found at <your-ip>:6789 and the default login details (change ASAP) are

    login:nzbget, password:tegbzn6789

    To allow scheduling, from the webui set the time correction value in settings/logging.

    To change umask settings.

    scroll to bottom, set umask like this (example shown for unraid)

    You can add an additional mount point for intermediate unpacking folder with:-

    -v </path/to/intermedia_unpacking_folder>:/intermediate

    for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate

    "},{"location":"images/docker-nzbget/#media-folders","title":"Media folders","text":"

    We have set /downloads as a optional path, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    "},{"location":"images/docker-nzbget/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nzbget/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnzbget:\nimage: lscr.io/linuxserver/nzbget:latest\ncontainer_name: nzbget\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- NZBGET_USER=nzbget #optional\n- NZBGET_PASS=tegbzn6789 #optional\nvolumes:\n- /path/to/data:/config\n- /path/to/downloads:/downloads #optional\nports:\n- 6789:6789\nrestart: unless-stopped\n
    "},{"location":"images/docker-nzbget/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nzbget \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e NZBGET_USER=nzbget `#optional` \\\n-e NZBGET_PASS=tegbzn6789 `#optional` \\\n-p 6789:6789 \\\n-v /path/to/data:/config \\\n-v /path/to/downloads:/downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nzbget:latest\n
    "},{"location":"images/docker-nzbget/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nzbget/#ports-p","title":"Ports (-p)","text":"Parameter Function 6789 WebUI"},{"location":"images/docker-nzbget/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. NZBGET_USER=nzbget Specify the user for web authentication. NZBGET_PASS=tegbzn6789 Specify the password for web authentication."},{"location":"images/docker-nzbget/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config NZBGet App data. /downloads Location of downloads on disk."},{"location":"images/docker-nzbget/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nzbget/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nzbget/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nzbget/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nzbget/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nzbget/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nzbget /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbget
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbget
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbget:latest
    "},{"location":"images/docker-nzbget/#versions","title":"Versions","text":"
    • 27.11.22: - Advanced notice: This image will be deprecated on 2022-12-31. Please consider switching to SABnzbd https://github.com/linuxserver/docker-sabnzbd
    • 13.11.22: - Rebase master to 3.16, migrate to s6v3.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 22.02.22: - Rebase to alpine 3.15, add six and python 7zip tools, allow env variables for credentials.
    • 04.07.21: - Rebase to alpine 3.14.
    • 28.05.21: - Add linuxserver wheel index.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 26.10.20: - Fix python dependencies.
    • 24.08.20: - Fix ignored umask environment variable.
    • 08.06.20: - Symlink python3 bin to python.
    • 01.06.20: - Rebasing to alpine 3.12. Removing python2.
    • 13.05.20: - Add rarfile python package (for DeepUnrar).
    • 01.01.20: - Add python3 alongside python2 during transition.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 13.06.19: - Add apprise, chardet & pynzbget packages.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 25.02.19: - Rebasing to alpine 3.9.
    • 20.01.19: - Add pipeline logic and multi arch, build from source.
    • 21.08.18: - Rebase to alpine 3.8.
    • 20.02.18: - Add note about supplemental mount point for intermediate unpacking.
    • 13.12.17: - Rebase to alpine 3.7.
    • 02.09.17: - Place app in subfolder rather than /app.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Rebase to alpine 3.6.
    • 20.04.17: - Add testing branch.
    • 06.02.17: - Rebase to alpine 3.5.
    • 30.09.16: - Fix umask.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README, perms fix on /app to allow updates.
    • 19.08.16: - Rebase to alpine linux.
    • 18.08.15: - Now useing latest version of unrar beta and implements the universal installer method.
    "},{"location":"images/docker-nzbhydra2/","title":"nzbhydra2","text":""},{"location":"images/docker-nzbhydra2/#linuxservernzbhydra2","title":"linuxserver/nzbhydra2","text":"

    Nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.

    It provides easy access to a number of raw and newznab based indexers. The application NZBHydra 2 is replacing NZBHydra 1 and supports migrating from V1. Be wary that there may be some compatibility issues for those migrating from V1 to V2, so ensure you back up your old configuration before moving over to the new version. NOTE: The last version that supports migration is linuxserver/nzbhydra2:v2.10.2-ls49

    "},{"location":"images/docker-nzbhydra2/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-nzbhydra2/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases dev \u2705 Prereleases from their GitHub"},{"location":"images/docker-nzbhydra2/#application-setup","title":"Application Setup","text":"

    The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

    "},{"location":"images/docker-nzbhydra2/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-nzbhydra2/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nnzbhydra2:\nimage: lscr.io/linuxserver/nzbhydra2:latest\ncontainer_name: nzbhydra2\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /nzb/download:/downloads\nports:\n- 5076:5076\nrestart: unless-stopped\n
    "},{"location":"images/docker-nzbhydra2/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=nzbhydra2 \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 5076:5076 \\\n-v /path/to/data:/config \\\n-v /nzb/download:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/nzbhydra2:latest\n
    "},{"location":"images/docker-nzbhydra2/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-nzbhydra2/#ports-p","title":"Ports (-p)","text":"Parameter Function 5076 WebUI"},{"location":"images/docker-nzbhydra2/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-nzbhydra2/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where nzbhydra2 should store config files. /downloads NZB download folder."},{"location":"images/docker-nzbhydra2/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-nzbhydra2/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-nzbhydra2/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-nzbhydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-nzbhydra2/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-nzbhydra2/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it nzbhydra2 /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f nzbhydra2
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbhydra2
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbhydra2:latest
    "},{"location":"images/docker-nzbhydra2/#versions","title":"Versions","text":"
    • 10.12.22: - Bump master JRE to v17. Default mapIpToHost to false.
    • 11.09.22: - Migrate to s6v3.
    • 03.05.22: - Rebase to Jammy.
    • 18.04.22: - Rebase to Alpine 3.15.
    • 01.05.20: - Reorganize container, Relocate app to /app/nzbhydra2/bin, Create /app/nzbhydra2/package_info, Use nzbhydra2wrapperPy3.py from zip.
    • 14.04.20: - Correct Name, Hydra2 -> NZBHydra2.
    • 08.01.20: - Switch to python3.
    • 05.01.20: - Add dev tag for prereleases.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 18.08.18: - Bump java version to 10, (bionic currently refers to it as version 11).
    • 10.08.18: - Rebase to ubuntu bionic.
    • 15.04.18: - Change to port 5076 in the Dockerfile.
    • 11.01.18: - Initial Release.
    "},{"location":"images/docker-ombi/","title":"ombi","text":""},{"location":"images/docker-ombi/#linuxserverombi","title":"linuxserver/ombi","text":"

    Ombi allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! Manage all your requests for Movies and TV with ease, leave notes for the user and get notification when a user requests something. Allow your users to post issues against their requests so you know there is a problem with the audio etc. Even automatically send them weekly newsletters of new content that has been added to your Plex server!

    "},{"location":"images/docker-ombi/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ombi/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Ombi releases development \u2705 Releases from the develop branch of Ombi"},{"location":"images/docker-ombi/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:3579. Follow the setup wizard on initial install. Then configure the required services.

    "},{"location":"images/docker-ombi/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-ombi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nombi:\nimage: lscr.io/linuxserver/ombi:latest\ncontainer_name: ombi\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- BASE_URL=/ombi #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 3579:3579\nrestart: unless-stopped\n
    "},{"location":"images/docker-ombi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=ombi \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e BASE_URL=/ombi `#optional` \\\n-p 3579:3579 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ombi:latest\n
    "},{"location":"images/docker-ombi/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-ombi/#ports-p","title":"Ports (-p)","text":"Parameter Function 3579 web gui"},{"location":"images/docker-ombi/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London BASE_URL=/ombi Subfolder can optionally be defined as an env variable for reverse proxies. Keep in mind that once this value is defined, the gui setting for base url no longer works. To use the gui setting, remove this env variable."},{"location":"images/docker-ombi/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-ombi/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ombi/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-ombi/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-ombi/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-ombi/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-ombi/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it ombi /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f ombi
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ombi
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ombi:latest
    "},{"location":"images/docker-ombi/#versions","title":"Versions","text":"
    • 11.09.22: - Migrate to s6v3.
    • 01.05.22: - Rebase to Jammy.
    • 26.04.21: - Update tarball name, allow for v4 builds in stable.
    • 18.01.21: - Update upstream repo. Deprecate v4-preview tag, which is merged to development tag upstream.
    • 14.04.20: - Add Ombi donate links.
    • 10.05.19: - Added an optional env variable for base url setting.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Clarify info on tags and development builds.
    • 25.01.19: - Add info on tags and development builds.
    • 09.01.19: - Switch to multi-arch builds and add aarch64 image.
    • 11.03.18: - Add HOME env to Dockerfile.
    • 05.03.18: - Switch to Ombi v3 stable based on .net core.
    • 26.01.18: - Fix continuation lines.
    • 16.04.17: - Switch to using inhouse mono baseimage.
    • 17.02.17: - Initial Release.
    "},{"location":"images/docker-openssh-server/","title":"openssh-server","text":""},{"location":"images/docker-openssh-server/#linuxserveropenssh-server","title":"linuxserver/openssh-server","text":"

    Openssh-server is a sandboxed environment that allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.

    "},{"location":"images/docker-openssh-server/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-openssh-server/#application-setup","title":"Application Setup","text":"

    If PUBLIC_KEY or PUBLIC_KEY_FILE, or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys. If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys. PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets.

    We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints.

    Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP

    Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password.

    The users only have access to the folders mapped and the processes running inside this container. Add any volume mappings you like for the users to have access to. To install packages or services for users to access, use the LinuxServer container customization methods described in this blog article.

    Sample use case is when a server admin would like to have automated incoming backups from a remote server to the local server, but they might not want all the other admins of the remote server to have full access to the local server. This container can be set up with a mounted folder for incoming backups, and rsync installed via LinuxServer container customization described above, so that the incoming backups can proceed, but remote server and its admins' access would be limited to the backup folder.

    It is also possible to run multiple copies of this container with different ports mapped, different folders mounted and access to different private keys for compartmentalized access.

    "},{"location":"images/docker-openssh-server/#tips","title":"TIPS","text":"

    You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname

    "},{"location":"images/docker-openssh-server/#key-generation","title":"Key Generation","text":"

    This container has a helper script to generate an ssh private/public key. In order to generate a key please run:

    docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server\n

    Then simply follow the prompts. The keys generated by this script are only displayed on your console output, so make sure to save them somewhere after generation.

    "},{"location":"images/docker-openssh-server/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-openssh-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nopenssh-server:\nimage: lscr.io/linuxserver/openssh-server:latest\ncontainer_name: openssh-server\nhostname: openssh-server #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PUBLIC_KEY=yourpublickey #optional\n- PUBLIC_KEY_FILE=/path/to/file #optional\n- PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys #optional\n- PUBLIC_KEY_URL=https://github.com/username.keys #optional\n- SUDO_ACCESS=false #optional\n- PASSWORD_ACCESS=false #optional\n- USER_PASSWORD=password #optional\n- USER_PASSWORD_FILE=/path/to/file #optional\n- USER_NAME=linuxserver.io #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 2222:2222\nrestart: unless-stopped\n
    "},{"location":"images/docker-openssh-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=openssh-server \\\n--hostname=openssh-server `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PUBLIC_KEY=yourpublickey `#optional` \\\n-e PUBLIC_KEY_FILE=/path/to/file `#optional` \\\n-e PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys `#optional` \\\n-e PUBLIC_KEY_URL=https://github.com/username.keys `#optional` \\\n-e SUDO_ACCESS=false `#optional` \\\n-e PASSWORD_ACCESS=false `#optional` \\\n-e USER_PASSWORD=password `#optional` \\\n-e USER_PASSWORD_FILE=/path/to/file `#optional` \\\n-e USER_NAME=linuxserver.io `#optional` \\\n-p 2222:2222 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/openssh-server:latest\n
    "},{"location":"images/docker-openssh-server/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-openssh-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 2222 ssh port"},{"location":"images/docker-openssh-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PUBLIC_KEY=yourpublickey Optional ssh public key, which will automatically be added to authorized_keys. PUBLIC_KEY_FILE=/path/to/file Optionally specify a file containing the public key (works with docker secrets). PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys Optionally specify a directory containing the public keys (works with docker secrets). PUBLIC_KEY_URL=https://github.com/username.keys Optionally specify a URL containing the public key. SUDO_ACCESS=false Set to true to allow linuxserver.io, the ssh user, sudo access. Without USER_PASSWORD set, this will allow passwordless sudo access. PASSWORD_ACCESS=false Set to true to allow user/password ssh access. You will want to set USER_PASSWORD or USER_PASSWORD_FILE as well. USER_PASSWORD=password Optionally set a sudo password for linuxserver.io, the ssh user. If this or USER_PASSWORD_FILE are not set but SUDO_ACCESS is set to true, the user will have passwordless sudo access. USER_PASSWORD_FILE=/path/to/file Optionally specify a file that contains the password. This setting supersedes the USER_PASSWORD option (works with docker secrets). USER_NAME=linuxserver.io Optionally specify a user name (Default:linuxserver.io)"},{"location":"images/docker-openssh-server/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-openssh-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= Optionally the hostname can be defined."},{"location":"images/docker-openssh-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-openssh-server/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-openssh-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-openssh-server/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-openssh-server/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it openssh-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openssh-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openssh-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openssh-server:latest
    "},{"location":"images/docker-openssh-server/#versions","title":"Versions","text":"
    • 18.10.22: - Fix wrong behavior of password/passwordless sudo
    • 11.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.09.22: - add netcat-openbsd with support for proxies.
    • 18.07.22: - Fix service perms to comply with upgrade to s6 v3.
    • 16.04.22: - Rebase to alpine 3.15.
    • 16.11.21: - Add PUBLIC_KEY_URL option
    • 28.06.21: - Rebasing to alpine 3.14. Add support for PAM.
    • 10.02.21: - Rebasing to alpine 3.13. Add openssh-client for scp.
    • 21.10.20: - Implement s6-log for openssh, which adds local timestamps to logs and can be used with a log parser like fail2ban.
    • 20.10.20: - Set umask for sftp.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.01.20: - Add key generation script.
    • 13.01.20: - Add openssh-sftp-server.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 17.10.19: - Initial Release.
    "},{"location":"images/docker-openvpn-as/","title":"openvpn-as","text":""},{"location":"images/docker-openvpn-as/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our wireguard image instead for vpn: https://github.com/linuxserver/docker-wireguard

    "},{"location":"images/docker-openvpn-as/#linuxserveropenvpn-as","title":"linuxserver/openvpn-as","text":"

    Openvpn-as is a full featured secure network tunneling VPN software solution that integrates OpenVPN server capabilities, enterprise management capabilities, simplified OpenVPN Connect UI, and OpenVPN Client software packages that accommodate Windows, MAC, Linux, Android, and iOS environments. OpenVPN Access Server supports a wide range of configurations, including secure and granular remote access to internal network and/ or private cloud network resources and applications with fine-grained access control.

    "},{"location":"images/docker-openvpn-as/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 latest"},{"location":"images/docker-openvpn-as/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description latest DEPRECATED, no longer updated - Stable releases based on ubuntu bionic xenial DEPRECATED, no longer updated - Stable releases based on ubuntu xenial"},{"location":"images/docker-openvpn-as/#application-setup","title":"Application Setup","text":"

    The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password

    During first login, make sure that the \"Authentication\" in the webui is set to \"Local\" instead of \"PAM\". Then set up the user accounts with their passwords (user accounts created under PAM do not survive container update or recreation).

    The \"admin\" account is a system (PAM) account and after container update or recreation, its password reverts back to the default. It is highly recommended to block this user's access for security reasons: 1) Create another user and set as an admin, 2) Log in as the new user, 3) Delete the \"admin\" user in the gui, 4) Modify the as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~#boot_pam_users.0=admin~~ boot_pam_users.0=kjhvkhv (this only has to be done once and will survive container recreation) * IMPORTANT NOTE: Commenting out the first pam user in as.conf creates issues in 2.7.5. To make it work while still blocking pam user access, uncomment that line and change admin to a random nonexistent user as described above.

    To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the \"Hostname or IP Address\" section to either your domain name or public ip address.

    "},{"location":"images/docker-openvpn-as/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-openvpn-as/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\nopenvpn-as:\nimage: lscr.io/linuxserver/openvpn-as\ncontainer_name: openvpn-as\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- INTERFACE=eth0 #optional\nvolumes:\n- <path to data>:/config\nports:\n- 943:943\n- 9443:9443\n- 1194:1194/udp\nrestart: unless-stopped\n
    "},{"location":"images/docker-openvpn-as/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n--name=openvpn-as \\\n--cap-add=NET_ADMIN \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e INTERFACE=eth0 `#optional` \\\n-p 943:943 \\\n-p 9443:9443 \\\n-p 1194:1194/udp \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/openvpn-as\n
    "},{"location":"images/docker-openvpn-as/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-openvpn-as/#ports-p","title":"Ports (-p)","text":"Parameter Function 943 Admin GUI port. 9443 TCP port. 1194/udp UDP port."},{"location":"images/docker-openvpn-as/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INTERFACE=eth0 With bridge networking, leave it as eth0 (or don't include at all), if host or macvlan, set it to your host's network interface, found by running ifconfig"},{"location":"images/docker-openvpn-as/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where openvpn-as should store configuration files."},{"location":"images/docker-openvpn-as/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-openvpn-as/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-openvpn-as/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-openvpn-as/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-openvpn-as/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it openvpn-as /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvpn-as
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvpn-as
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvpn-as
    "},{"location":"images/docker-openvpn-as/#versions","title":"Versions","text":"
    • 15.06.20: - Deprecate.
    • 15.06.20: - Add fixes for 2.9.0.
    • 04.11.20: - xenial tag is deprecated and there will be no further releases for that tag.
    • 22.06.20: - Added Support for persistent Customization Folders.
    • 26.03.20: - Switch to using the openvpn-as repo for packages.
    • 29.08.19: - Update Application Setup instructions in readme to fix 2.7.5 login issue for existing users.
    • 27.08.19: - Add new clients package to install and upgrade process.
    • 22.08.19: - Prevent auto-start of openvpn after first time install, before configuration is completed.
    • 25.07.19: - Create a xenial branch/tag and rebase master/latest to bionic.
    • 07.04.19: - Fix first time config.
    • 03.04.19: - Big rewrite of the install and update logic of openvpn-as to fix breaking changes (should fix updating from 2.6.1 to 2.7.3), added mysql-client for cluster support.
    • 14.03.19: - Update deb package URL.
    • 21.02.19: - Rebase to xenial due to incompatibility issues on some older host OSes.
    • 12.02.19: - Rename github repo to match the docker hub repo and container name.
    • 07.02.19: - Add pipeline logic and multi arch.
    • 31.01.19: - Add port mappings to docker create sample in readme.
    • 26.01.19: - Removed privileged and host networking requirements, added cap-add=NET_ADMIN requirement instead. INTERFACE no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default.
    • 19.12.18: - Bump to version 2.6.1.
    • 10.07.18: - Bump to version 2.5.2.
    • 23.03.18: - Bump to version 2.5.
    • 14.12.17: - Consolidate layers and fix continuation lines.
    • 25.10.17: - Bump to version 2.1.12.
    • 18.08.17: - Switch default authentication method to local, update readme on how to deactivate the admin user.
    • 31.07.17: - Fix updates of existing openvpn-as installs.
    • 07.07.17: - Bump to version 2.1.9.
    • 31.10.16: - Bump to version 2.1.4.
    • 14.10.16: - Add version layer information.
    • 13.09.16: - Rebuild due to push error to hub on last build.
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 01.08.16: - Rebase to xenial.
    • 18.09.15: - Initial Release.
    "},{"location":"images/docker-openvscode-server/","title":"openvscode-server","text":""},{"location":"images/docker-openvscode-server/#linuxserveropenvscode-server","title":"linuxserver/openvscode-server","text":"

    Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.

    "},{"location":"images/docker-openvscode-server/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-openvscode-server/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases insiders \u2705 Insiders releases"},{"location":"images/docker-openvscode-server/#application-setup","title":"Application Setup","text":"

    If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://<your-ip>:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://<your-ip>:3000.

    For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

    git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n

    When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at https://PORT.openvscode-server.domain.com very much like how code-server's port proxy function is handled. For that, a wildcard CNAME *.openvscode-server.domain.com needs to be created and the SWAG cert needs to cover those subdomains.

    "},{"location":"images/docker-openvscode-server/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-openvscode-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nopenvscode-server:\nimage: lscr.io/linuxserver/openvscode-server:latest\ncontainer_name: openvscode-server\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- CONNECTION_TOKEN= #optional\n- CONNECTION_SECRET= #optional\n- SUDO_PASSWORD=password #optional\n- SUDO_PASSWORD_HASH= #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-openvscode-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=openvscode-server \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e CONNECTION_TOKEN= `#optional` \\\n-e CONNECTION_SECRET= `#optional` \\\n-e SUDO_PASSWORD=password `#optional` \\\n-e SUDO_PASSWORD_HASH= `#optional` \\\n-p 3000:3000 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/openvscode-server:latest\n
    "},{"location":"images/docker-openvscode-server/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-openvscode-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web UI port."},{"location":"images/docker-openvscode-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use. CONNECTION_TOKEN= Optional security token for accessing the Web UI (ie. supersecrettoken). CONNECTION_SECRET= Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. /path/to/file). Overrides CONNECTION_TOKEN. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed."},{"location":"images/docker-openvscode-server/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-openvscode-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-openvscode-server/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-openvscode-server/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-openvscode-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-openvscode-server/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-openvscode-server/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it openvscode-server /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f openvscode-server
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvscode-server
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvscode-server:latest
    "},{"location":"images/docker-openvscode-server/#versions","title":"Versions","text":"
    • 29.09.22: - Rebase to jammy, switch to s6v3. Fix chown logic to skip /config/workspace contents.
    • 12.02.22: - Update install-extension helper to compensate for upstream changes.
    • 04.02.22: - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar.
    • 29.12.21: - Add install-extension as a helper for mods to install extensions.
    • 10.12.21: - Update deprecated connectionToken arg.
    • 30.11.21: - Fix app folder permissions, add the optional sudo password vars.
    • 29.11.21: - Create .profile and .bashrc for the user.
    • 29.11.21: - Release insiders tag.
    • 28.11.21: - Initial Release.
    "},{"location":"images/docker-organizr/","title":"organizr","text":""},{"location":"images/docker-organizr/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. Please use the official image at https://hub.docker.com/r/organizr/organizr

    "},{"location":"images/docker-organizr/#linuxserverorganizr","title":"linuxserver/organizr","text":"

    Organizr is a HTPC/Homelab Services Organizer - Written in PHP

    Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip's and ports? Well, Organizr is here to help with that. Organizr allows you to setup \"Tabs\" that will be loaded all in one webpage. You can then work on your server with ease. You can even open up two tabs side by side. Want to give users access to some Tabs? No problem, just enable user support and have them make an account. Want guests to be able to visit too? Enable Guest support for those tabs.

    For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr

    "},{"location":"images/docker-organizr/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-organizr/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-organizr/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\norganizr:\nimage: linuxserver/organizr\ncontainer_name: organizr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=<your timezone, eg Europe/London>\nvolumes:\n- <path to data>:/config\nports:\n- 9983:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-organizr/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=organizr \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=<your timezone, eg Europe/London> \\\n  -p 9983:80 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/organizr\n
    "},{"location":"images/docker-organizr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-organizr/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 9983 on the host"},{"location":"images/docker-organizr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=<your timezone, eg Europe/London> for specifying your timezone"},{"location":"images/docker-organizr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this is where your user data and logs will live"},{"location":"images/docker-organizr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-organizr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-organizr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-organizr/#application-setup","title":"Application Setup","text":"

    Dead simple to get running, create the container as instructed and start it. When up and running, load the site.

    "},{"location":"images/docker-organizr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-organizr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it organizr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f organizr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' organizr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/organizr
    "},{"location":"images/docker-organizr/#versions","title":"Versions","text":"
    • 18.04.19: - Fix new install not working.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 26.02.19: - Upgrade packages during install to prevent mismatch with baseimage.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 11.02.19: - Fix permissions on new app location
    • 31.12.18: - Moved to pipeline building from v1-master branch
    • 05.09.18: - Rebase to Alpine 3.8
    • 10.01.18: - Rebase to Alpine 3.7
    • 25.05.17: - Rebase to Alpine 3.6
    • 02.05.17: - Added php7-curl package
    • 12.04.17: - Added php7-ldap package
    • 10.03.18: - Initial Release.
    "},{"location":"images/docker-oscam/","title":"oscam","text":""},{"location":"images/docker-oscam/#linuxserveroscam","title":"linuxserver/oscam","text":"

    Oscam is an Open Source Conditional Access Module software used for descrambling DVB transmissions using smart cards. It's both a server and a client.

    "},{"location":"images/docker-oscam/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-oscam/#application-setup","title":"Application Setup","text":"

    To set up oscam there are numerous guides on the internet. There are too many scenarios to make a quick guide. The web interface is at port 8888.

    "},{"location":"images/docker-oscam/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-oscam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\noscam:\nimage: lscr.io/linuxserver/oscam:latest\ncontainer_name: oscam\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 8888:8888\ndevices:\n- /dev/ttyUSB0:/dev/ttyUSB0\nrestart: unless-stopped\n
    "},{"location":"images/docker-oscam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=oscam \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8888:8888 \\\n-v /path/to/data:/config \\\n--device /dev/ttyUSB0:/dev/ttyUSB0 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/oscam:latest\n
    "},{"location":"images/docker-oscam/#passing-through-smart-card-readers","title":"Passing through Smart Card Readers","text":"

    If you want to pass through a smart card reader, you need to specify the reader with the --device= tag. The method used depends on how the reader is recognized. The first is /dev/ttyUSBX. To find the correct device, connect the reader and run dmesg | tail on the host. In the output you will find /dev/ttyUSBX, where X is the number of the device. If this is the first reader you connect to your host, it will be /dev/ttyUSB0. If you add one more it will be /dev/ttyUSB1.

    If there are no /dev/ttyUSBX device in dmesg | tail, you have to use the USB bus path. It will look similar to the below.

    /dev/bus/usb/001/001

    The important parts are the two numbers in the end. The first one is the Bus number, the second is the Device number. To find the Bus and Device number you have to run lsusb on the host, then find your USB device in the list and note the Bus and Device numbers.

    Here is an example of how to find the Bus and Device. The output of the lsusb command is below.

    Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121

    The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the --device= tag.

    --device=/dev/bus/usb/002/005

    If you have multiple smart card readers, you add one --device= tag for each reader.

    "},{"location":"images/docker-oscam/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-oscam/#ports-p","title":"Ports (-p)","text":"Parameter Function 8888 WebUI"},{"location":"images/docker-oscam/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-oscam/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where oscam should store config files and logs."},{"location":"images/docker-oscam/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/ttyUSB0 For passing through smart card readers."},{"location":"images/docker-oscam/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-oscam/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-oscam/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-oscam/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-oscam/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-oscam/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it oscam /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f oscam
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' oscam
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/oscam:latest
    "},{"location":"images/docker-oscam/#versions","title":"Versions","text":"
    • 03.11.22: - Rebasing to alpine 3.16 and s6v3. Update pcsd driver link.
    • 13.02.22: - Rebasing to alpine 3.15.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 29.04.19: - Add revision check, so pipeline can build new revisions.
    • 28.04.19: - Switch back to streamboard svn to fix version not showing in UI.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 19.02.19: - Add pipeline logic and multi arch, rebase to Alpine 3.8.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 13.12.17: - Rebase to alpine 3.7.
    • 19.10.17: - Add ccid package for usb card readers.
    • 17.10.17: - Switch to using bzr for source code, streamboard awol.
    • 28.05.17: - Rebase to alpine 3.6.
    • 09.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 02.10.16: - Add info on passing through devices to README.
    • 25.09.16: - Initial release.
    "},{"location":"images/docker-overseerr/","title":"overseerr","text":""},{"location":"images/docker-overseerr/#linuxserveroverseerr","title":"linuxserver/overseerr","text":"

    Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

    "},{"location":"images/docker-overseerr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-overseerr/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases from GitHub develop \u2705 Development releases from commits in upstream develop branch"},{"location":"images/docker-overseerr/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:5055, for more information check out Overseerr.

    "},{"location":"images/docker-overseerr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-overseerr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\noverseerr:\nimage: lscr.io/linuxserver/overseerr:latest\ncontainer_name: overseerr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 5055:5055\nrestart: unless-stopped\n
    "},{"location":"images/docker-overseerr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=overseerr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-p 5055:5055 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/overseerr:latest\n
    "},{"location":"images/docker-overseerr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-overseerr/#ports-p","title":"Ports (-p)","text":"Parameter Function 5055 Port for Overseerr's web interface."},{"location":"images/docker-overseerr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York"},{"location":"images/docker-overseerr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-overseerr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-overseerr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-overseerr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-overseerr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-overseerr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-overseerr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it overseerr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f overseerr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' overseerr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/overseerr:latest
    "},{"location":"images/docker-overseerr/#versions","title":"Versions","text":"
    • 18.12.22: - Rebase main to 3.17.
    • 27.10.22: - Rebase main to 3.16, migrate to s6v3.
    • 20.08.22: - Don't install cypress.
    • 01.04.22: - Rebase main branch to Alpine 3.15.
    • 27.01.22: - Rebase develop branch to Alpine 3.15.
    • 04.01.22: - Remove cached files.
    • 10.10.21: - Add additional post-build cleanup.
    • 19.09.21: - Rebase to alpine 3.14. Update code formatting. Increase js mem limit.
    • 05.04.21: - Initial Release.
    "},{"location":"images/docker-paperless-ng/","title":"paperless-ng","text":""},{"location":"images/docker-paperless-ng/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    "},{"location":"images/docker-paperless-ng/#linuxserverpaperless-ng","title":"linuxserver/paperless-ng","text":"

    Paperless-ng is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"

    "},{"location":"images/docker-paperless-ng/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-paperless-ng/#application-setup","title":"Application Setup","text":"

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ng. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    "},{"location":"images/docker-paperless-ng/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-paperless-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npaperless-ng:\nimage: lscr.io/linuxserver/paperless-ng:latest\ncontainer_name: paperless-ng\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- REDIS_URL= #optional\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/appdata/data>:/data\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-paperless-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=paperless-ng \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e REDIS_URL= `#optional` \\\n-p 8000:8000 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/appdata/data>:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/paperless-ng:latest\n
    "},{"location":"images/docker-paperless-ng/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-paperless-ng/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"images/docker-paperless-ng/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"images/docker-paperless-ng/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ng data files."},{"location":"images/docker-paperless-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-paperless-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-paperless-ng/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-paperless-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-paperless-ng/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-paperless-ng/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it paperless-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ng:latest
    "},{"location":"images/docker-paperless-ng/#versions","title":"Versions","text":"
    • 05.09.22: - Deprecate.
    • 30.11.21: - Added in jbig2enc.
    • 07.10.21: - Fixed variable that determins if we should run redis locally.
    • 01.10.21: - Replaced uwsgi with gunicorn due to websocket issues.
    • 24.07.21: - Fixed directory config files (sqlite db) is all stored.
    • 23.07.21: - Fixed initial user creation.
    • 10.07.21: - Initial Release.
    "},{"location":"images/docker-paperless-ngx/","title":"paperless-ngx","text":""},{"location":"images/docker-paperless-ngx/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend switching to the new official container: https://github.com/paperless-ngx/paperless-ngx

    "},{"location":"images/docker-paperless-ngx/#linuxserverpaperless-ngx","title":"linuxserver/paperless-ngx","text":"

    Paperless-ngx is an application by Daniel Quinn and contributors that indexes your scanned documents and allows you to easily search for documents and store metadata alongside your documents.\"

    "},{"location":"images/docker-paperless-ngx/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-paperless-ngx/#application-setup","title":"Application Setup","text":"

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at paperless-ngx. For convenience this container provides an alias to perform administration management commands. Available administration commands are documented upstream here and can be accessed with this container thus: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

    "},{"location":"images/docker-paperless-ngx/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-paperless-ngx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npaperless-ngx:\nimage: lscr.io/linuxserver/paperless-ngx:latest\ncontainer_name: paperless-ngx\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- REDIS_URL= #optional\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/appdata/data:/data\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-paperless-ngx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=paperless-ngx \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e REDIS_URL= `#optional` \\\n-p 8000:8000 \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/appdata/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/paperless-ngx:latest\n
    "},{"location":"images/docker-paperless-ngx/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-paperless-ngx/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"images/docker-paperless-ngx/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"images/docker-paperless-ngx/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all paperless-ngx data files."},{"location":"images/docker-paperless-ngx/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-paperless-ngx/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-paperless-ngx/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-paperless-ngx/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-paperless-ngx/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-paperless-ngx/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it paperless-ngx /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f paperless-ngx
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ngx
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ngx:latest
    "},{"location":"images/docker-paperless-ngx/#versions","title":"Versions","text":"
    • 05.09.22: - Deprecate.
    • 16.05.22: - Add correct libqpdf.so to arm builds.
    • 14.05.22: - Fine tune disabling of redis.
    • 12.05.22: - Move migrations to after multilangocr mod. Fix disabling of redis. Add missing dep for postgresql.
    • 12.05.22: - Utilize lsio wheel for pikepdf.
    • 11.05.22: - Update upstream artifact name and utilize lsio wheels for scipy and scikit-learn.
    • 05.05.22: - Add runtime dependencies libxslt1.1 for armhf
    • 30.04.22: - Add runtime dependencies lizbar and poppler-utils
    • 27.04.22: - Add build-dependencies for arm32 builds.
    • 11.04.22: - Replaced uwsgi with gunicorn due to websocket issues.
    • 11.03.22: - Initial Release.
    "},{"location":"images/docker-papermerge/","title":"papermerge","text":""},{"location":"images/docker-papermerge/#linuxserverpapermerge","title":"linuxserver/papermerge","text":"

    Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.\"

    "},{"location":"images/docker-papermerge/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-papermerge/#application-setup","title":"Application Setup","text":"

    Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge.

    If you need non-English OCR language support, you can use this mod.

    "},{"location":"images/docker-papermerge/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-papermerge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npapermerge:\nimage: lscr.io/linuxserver/papermerge:latest\ncontainer_name: papermerge\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- REDIS_URL= #optional\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/appdata/data>:/data\nports:\n- 8000:8000\nrestart: unless-stopped\n
    "},{"location":"images/docker-papermerge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=papermerge \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e REDIS_URL= `#optional` \\\n-p 8000:8000 \\\n-v </path/to/appdata/config>:/config \\\n-v </path/to/appdata/data>:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/papermerge:latest\n
    "},{"location":"images/docker-papermerge/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-papermerge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"images/docker-papermerge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). If left blank or not included, will use a built-in redis instance. If changed after initial setup will also require manual modification of /config/settings.py"},{"location":"images/docker-papermerge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /data Storage location for all papermerge data files."},{"location":"images/docker-papermerge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-papermerge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-papermerge/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-papermerge/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-papermerge/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-papermerge/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it papermerge /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f papermerge
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' papermerge
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/papermerge:latest
    "},{"location":"images/docker-papermerge/#versions","title":"Versions","text":"
    • 15.07.22: - Don't install development python packages
    • 13.04.21: - Handle upstream stapler change
    • 13.03.21: - Fixed mglib dependency per issue 32
    • 25.02.21: - Updated dependencies for v2
    • 07.02.21: - Support external MySQL/PSQL DBs.
    • 01.02.21: - Add redis.
    • 09.12.20: - Fix locales.
    • 08.08.20: - Initial Release.
    "},{"location":"images/docker-photoshow/","title":"photoshow","text":""},{"location":"images/docker-photoshow/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-photoshow/#linuxserverphotoshow","title":"linuxserver/photoshow","text":"

    Photoshow is gallery software at its easiest, it doesn't even require a database.

    "},{"location":"images/docker-photoshow/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-photoshow/#application-setup","title":"Application Setup","text":"

    On first run create an admin account, any folder and its subfolders that you map to /Pictures will be presented as a webgallery. Config settings are persistent and stored as a subfolder of the /Thumbs mapping.

    "},{"location":"images/docker-photoshow/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-photoshow/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nphotoshow:\nimage: lscr.io/linuxserver/photoshow:latest\ncontainer_name: photoshow\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <path to pictures>:/Pictures:ro\n- <path to store thumbs>:/Thumbs\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-photoshow/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=photoshow \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v <path to data>:/config \\\n-v <path to pictures>:/Pictures:ro \\\n-v <path to store thumbs>:/Thumbs \\\n--restart unless-stopped \\\nlscr.io/linuxserver/photoshow:latest\n
    "},{"location":"images/docker-photoshow/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-photoshow/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-photoshow/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-photoshow/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Stores config and logs for nginx base. /Pictures:ro Your local folder of photos you wish to share. /Thumbs Local folder to store thumbnails of your images."},{"location":"images/docker-photoshow/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-photoshow/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-photoshow/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-photoshow/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-photoshow/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-photoshow/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it photoshow /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f photoshow
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' photoshow
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/photoshow:latest
    "},{"location":"images/docker-photoshow/#versions","title":"Versions","text":"
    • 14.10.22: - Deprecate image.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 23.09.19: - Adding PHP-Exif for image metadata and processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.02.19: - Rebasing to alpine 3.9.
    • 16.01.19: - Add pipeline logic and multi arch.
    • 05.09.18: - Rebase to alpine 3.8.
    • 07.01.18: - Rebase to alpine 3.7.
    • 25.05.17: - Rebase to alpine 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 14.02.17: - Rebase to alpine 3.5.
    • 14.10.16: - Add version layer information.
    • 30.09.16: - Rebase to alpine linux.
    • 11.09.16: - Add layer badges to README.
    • 21.08.15: - Use patched keybaord js from fork of photoshow.
    • 21.08.15: - Initial Release.
    "},{"location":"images/docker-phpmyadmin/","title":"phpmyadmin","text":""},{"location":"images/docker-phpmyadmin/#linuxserverphpmyadmin","title":"linuxserver/phpmyadmin","text":"

    Phpmyadmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB.

    "},{"location":"images/docker-phpmyadmin/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-phpmyadmin/#application-setup","title":"Application Setup","text":"

    This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.

    We support all of the official environment variables for configuration as well as directly editing the config files.

    For more information check out the phpmyadmin documentation.

    "},{"location":"images/docker-phpmyadmin/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-phpmyadmin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nphpmyadmin:\nimage: lscr.io/linuxserver/phpmyadmin:latest\ncontainer_name: phpmyadmin\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\n- PMA_ARBITRARY=1 #optional\n- PMA_ABSOLUTE_URI=https://phpmyadmin.example.com #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-phpmyadmin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=phpmyadmin \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-e PMA_ARBITRARY=1 `#optional` \\\n-e PMA_ABSOLUTE_URI=https://phpmyadmin.example.com `#optional` \\\n-p 80:80 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/phpmyadmin:latest\n
    "},{"location":"images/docker-phpmyadmin/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-phpmyadmin/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend"},{"location":"images/docker-phpmyadmin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York PMA_ARBITRARY=1 Set to 1 to allow you to connect to any server. Setting to 0 will only allow you to connect to specified hosts (See Application Setup) PMA_ABSOLUTE_URI=https://phpmyadmin.example.com Set the URL you will use to access the web frontend"},{"location":"images/docker-phpmyadmin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-phpmyadmin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-phpmyadmin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-phpmyadmin/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-phpmyadmin/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-phpmyadmin/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-phpmyadmin/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it phpmyadmin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f phpmyadmin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' phpmyadmin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/phpmyadmin:latest
    "},{"location":"images/docker-phpmyadmin/#versions","title":"Versions","text":"
    • 18.11.22: - Rebasing to Alpine 3.16, migrate to s6v3.
    • 20.08.22: - Rebasing to Alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 23.01.22: - Pin versions to 5.x.x.
    • 14.06.21: - Initial Release.
    "},{"location":"images/docker-pidgin/","title":"pidgin","text":""},{"location":"images/docker-pidgin/#linuxserverpidgin","title":"linuxserver/pidgin","text":"

    Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.

    "},{"location":"images/docker-pidgin/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pidgin/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true

    This Pidgin installation comes with default chat plugins plus a series of third party ones. Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it.

    • Bonjour- Default XMPP style plugin
    • Discord- Provided by purple-discord
    • Facebook- Provided by purple-facebook
    • Gadu-Gadu- Default libgadu plugin
    • Google Talk- Provided by purple-hangouts
    • GroupWise- Default GroupWise plugin
    • Hangouts- Provided by purple-hangouts
    • ICQ (WIM)- Provided by icyque
    • IRC- Default IRC plugin
    • Instagram- Provided by purple-instagram
    • Office Comminicator (SIPE)- Provided by SIPE Project
    • Rocket.chat- Provided by purple-rocketchat
    • SIMPLE- Default plugin
    • Skype (HTTP)- Provided by skype4pidgin
    • Slack- Provided by slack-libpurple
    • Telegram- Provided by telegram-purple
    • XMPP- Default XMPP plugin
    • Zephyr- Default project Athena plugin
    "},{"location":"images/docker-pidgin/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pidgin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npidgin:\nimage: lscr.io/linuxserver/pidgin:latest\ncontainer_name: pidgin\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-pidgin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pidgin \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pidgin:latest\n
    "},{"location":"images/docker-pidgin/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pidgin/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Pidgin desktop gui."},{"location":"images/docker-pidgin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-pidgin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-pidgin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-pidgin/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pidgin/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pidgin/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pidgin/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pidgin/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pidgin /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pidgin
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pidgin
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pidgin:latest
    "},{"location":"images/docker-pidgin/#versions","title":"Versions","text":"
    • 21.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 15.02.22: - Add build deps for discord.
    • 23.12.21: - Rebase to Alpine 3.15.
    • 26.09.21: - Rebase to Alpine 3.14.
    • 14.05.21: - Initial release.
    "},{"location":"images/docker-piwigo/","title":"piwigo","text":""},{"location":"images/docker-piwigo/#linuxserverpiwigo","title":"linuxserver/piwigo","text":"

    Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.

    "},{"location":"images/docker-piwigo/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-piwigo/#application-setup","title":"Application Setup","text":"
    • You must create a user and database for piwigo to use in a mysql/mariadb server.

    • Self-signed keys are generated the first time you run the container and can be found in /config/keys, if needed, you can replace them with your own.

    • The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc.\"

    "},{"location":"images/docker-piwigo/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-piwigo/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npiwigo:\nimage: lscr.io/linuxserver/piwigo:latest\ncontainer_name: piwigo\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/appdata/gallery:/gallery\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-piwigo/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=piwigo \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/appdata/gallery:/gallery \\\n--restart unless-stopped \\\nlscr.io/linuxserver/piwigo:latest\n
    "},{"location":"images/docker-piwigo/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-piwigo/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Application WebUI"},{"location":"images/docker-piwigo/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-piwigo/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /gallery Image storage for Piwigo"},{"location":"images/docker-piwigo/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-piwigo/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-piwigo/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-piwigo/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-piwigo/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-piwigo/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it piwigo /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f piwigo
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piwigo
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piwigo:latest
    "},{"location":"images/docker-piwigo/#versions","title":"Versions","text":"
    • 08.11.22: - Rebase to Alpine 3.16, migrate to s6v3. Move application install to /app/www/public, add migration for existing users. Container updates should now update the application correctly.
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 29.06.21: - Rebase to 3.14, Add php7-zip package
    • 20.05.21: - Create separate volume for image data
    • 23.01.21: - Rebasing to alpine 3.13.
    • 12.12.20: - Increased upload_max_filesize in php.ini
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 12.06.19: - Add ffmpeg and other deps as needed by popular plugins.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 01.03.19: - Add php-ctype & php-curl.
    • 22.02.19: - Rebasing to alpine 3.9, add php-ldap.
    • 28.01.19: - Rebase to alpine linux 3.8 , add pipeline logic and multi arch.
    • 25.01.18: - Rebase to alpine linux 3.7.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 20.04.17: - Add php7-exif package, thanks iiska
    • 23.02.17: - Rebase to alpine linux 3.5 and nginx.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 29.08.15: - Initial Release.
    "},{"location":"images/docker-pixapop/","title":"pixapop","text":""},{"location":"images/docker-pixapop/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-pixapop/#linuxserverpixapop","title":"linuxserver/pixapop","text":"

    Pixapop is an open-source single page application to view your photos in the easiest way possible.

    "},{"location":"images/docker-pixapop/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pixapop/#application-setup","title":"Application Setup","text":"

    Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.

    "},{"location":"images/docker-pixapop/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pixapop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npixapop:\nimage: lscr.io/linuxserver/pixapop:latest\ncontainer_name: pixapop\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- APP_USERNAME=admin #optional\n- APP_PASSWORD=admin #optional\nvolumes:\n- /path/to/config:/config\n- /path/to/photos:/photos\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-pixapop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pixapop \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e APP_USERNAME=admin `#optional` \\\n-e APP_PASSWORD=admin `#optional` \\\n-p 80:80 \\\n-v /path/to/config:/config \\\n-v /path/to/photos:/photos \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pixapop:latest\n
    "},{"location":"images/docker-pixapop/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pixapop/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-pixapop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. APP_USERNAME=admin Specify a username to enable authentication. APP_PASSWORD=admin Specify a password to enable authentication."},{"location":"images/docker-pixapop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Stores config and logs for nginx base. /photos Your local folder of photos."},{"location":"images/docker-pixapop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pixapop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pixapop/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pixapop/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pixapop/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pixapop/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pixapop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pixapop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pixapop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pixapop:latest
    "},{"location":"images/docker-pixapop/#versions","title":"Versions","text":"
    • 14.10.22 - Deprecate image.
    • 17.12.20 - Move image to main linuxserver repo, add notice to container log
    • 18.03.19 - Update build dependencies
    • 18.03.19 - Add build dependencies
    • 17.03.19 - Initial release
    "},{"location":"images/docker-plex-meta-manager/","title":"plex-meta-manager","text":""},{"location":"images/docker-plex-meta-manager/#linuxserverplex-meta-manager","title":"linuxserver/plex-meta-manager","text":"

    Plex-meta-manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki.

    "},{"location":"images/docker-plex-meta-manager/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-plex-meta-manager/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases. develop \u2705 Latest commits from the develop branch"},{"location":"images/docker-plex-meta-manager/#application-setup","title":"Application Setup","text":"

    There is a walkthrough available to help get you up and running.

    This image supports all of the environment variables listed here and all commandline arguments.

    To perform a one-time run use docker run (or docker-compose run) with the --rm and -e PMM_RUN=True arguments. This will cause the container to process your config immediately instead of waiting for the scheduled time, and delete the old container after completion.

    For more information see the official wiki.

    "},{"location":"images/docker-plex-meta-manager/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-plex-meta-manager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nplex-meta-manager:\nimage: lscr.io/linuxserver/plex-meta-manager:latest\ncontainer_name: plex-meta-manager\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- PMM_CONFIG=/config/config.yml #optional\n- PMM_TIME=03:00 #optional\n- PMM_RUN=False #optional\n- PMM_TEST=False #optional\n- PMM_NO_MISSING=False #optional\nvolumes:\n- /path/to/appdata/config:/config\nrestart: unless-stopped\n
    "},{"location":"images/docker-plex-meta-manager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=plex-meta-manager \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e PMM_CONFIG=/config/config.yml `#optional` \\\n-e PMM_TIME=03:00 `#optional` \\\n-e PMM_RUN=False `#optional` \\\n-e PMM_TEST=False `#optional` \\\n-e PMM_NO_MISSING=False `#optional` \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/plex-meta-manager:latest\n
    "},{"location":"images/docker-plex-meta-manager/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-plex-meta-manager/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-plex-meta-manager/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. PMM_CONFIG=/config/config.yml Specify a custom config file to use. PMM_TIME=03:00 Comma-separated list of times to update each day. Format: HH:MM. PMM_RUN=False Set to True to run without the scheduler. PMM_TEST=False Set to True to run in debug mode with only collections that have test: true. PMM_NO_MISSING=False Set to True to run without any of the missing movie/show functions."},{"location":"images/docker-plex-meta-manager/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Local path for plex-meta-manager config files."},{"location":"images/docker-plex-meta-manager/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-plex-meta-manager/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-plex-meta-manager/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-plex-meta-manager/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-plex-meta-manager/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-plex-meta-manager/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it plex-meta-manager /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex-meta-manager
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex-meta-manager
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex-meta-manager:latest
    "},{"location":"images/docker-plex-meta-manager/#versions","title":"Versions","text":"
    • 11.12.22: - Rebase master to Alpine 3.17.
    • 08.11.22: - Add develop branch.
    • 25.10.22: - Support commandline args and relative paths.
    • 03.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
    • 30.01.22: - Initial Release.
    "},{"location":"images/docker-plex/","title":"plex","text":""},{"location":"images/docker-plex/#linuxserverplex","title":"linuxserver/plex","text":"

    Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

    "},{"location":"images/docker-plex/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-plex/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases with Focal baseimage bionic \u2705 DEPRECATED - Stable releases with Bionic baseimage"},{"location":"images/docker-plex/#application-setup","title":"Application Setup","text":"

    Webui can be found at <your-ip>:32400/web

    ** Note about updates, if there is no value set for the VERSION variable, then no updates will take place.**

    ** For new users, no updates will take place on the first run of the container as there is no preferences file to read your token from, to update restart the Docker container after logging in through the webui**

    Valid settings for VERSION are:-

    IMPORTANT NOTE:- YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT

    • docker: Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command.
    • latest: will update plex to the latest version available that you are entitled to.
    • public: will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates.
    • <specific-version>: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.
    "},{"location":"images/docker-plex/#hardware-acceleration","title":"Hardware Acceleration","text":""},{"location":"images/docker-plex/#intel","title":"Intel","text":"

    Hardware acceleration users for Intel Quicksync will need to mount their /dev/dri video device inside of the container by passing the following command when running or creating the container:

    --device=/dev/dri:/dev/dri\n

    We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

    "},{"location":"images/docker-plex/#nvidia","title":"Nvidia","text":"

    Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here:

    https://github.com/NVIDIA/nvidia-docker

    We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the plex docker.

    "},{"location":"images/docker-plex/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-plex/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nplex:\nimage: lscr.io/linuxserver/plex:latest\ncontainer_name: plex\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- VERSION=docker\n- PLEX_CLAIM= #optional\nvolumes:\n- /path/to/library:/config\n- /path/to/tvseries:/tv\n- /path/to/movies:/movies\nrestart: unless-stopped\n
    "},{"location":"images/docker-plex/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=plex \\\n--net=host \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e VERSION=docker \\\n-e PLEX_CLAIM= `#optional` \\\n-v /path/to/library:/config \\\n-v /path/to/tvseries:/tv \\\n-v /path/to/movies:/movies \\\n--restart unless-stopped \\\nlscr.io/linuxserver/plex:latest\n
    "},{"location":"images/docker-plex/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-plex/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-plex/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Use Host Networking"},{"location":"images/docker-plex/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation VERSION=docker Set whether to update plex or not - see Application Setup section. PLEX_CLAIM= Optionally you can obtain a claim token from https://plex.tv/claim and input here. Keep in mind that the claim tokens expire within 4 minutes."},{"location":"images/docker-plex/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Plex library location. This can grow very large, 50gb+ is likely for a large collection. /tv Media goes here. Add as many as needed e.g. /movies, /tv, etc. /movies Media goes here. Add as many as needed e.g. /movies, /tv, etc."},{"location":"images/docker-plex/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-plex/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-plex/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-plex/#optional-parameters","title":"Optional Parameters","text":"

    If you want to run the container in bridge network mode (instead of the recommended host network mode) you will need to specify ports. The official documentation for ports lists 32400 as the only required port. The rest of the ports are optionally used for specific purposes listed in the documentation. If you have not already claimed your server (first time setup) you need to set PLEX_CLAIM to claim a server set up with bridge networking.

      -p 32400:32400 \\\n  -p 1900:1900/udp \\\n  -p 3005:3005 \\\n  -p 5353:5353/udp \\\n  -p 8324:8324 \\\n  -p 32410:32410/udp \\\n  -p 32412:32412/udp \\\n  -p 32413:32413/udp \\\n  -p 32414:32414/udp \\\n  -p 32469:32469\n

    The application accepts a series of environment variables to further customize itself on boot:

    Parameter Function --device=/dev/dri:/dev/dri Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section. --device=/dev/dvb:/dev/dvb Add this option to your run command if you plan on using dvb devices."},{"location":"images/docker-plex/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-plex/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-plex/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it plex /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f plex
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex:latest
    "},{"location":"images/docker-plex/#versions","title":"Versions","text":"
    • 16.10.22: - Rebase to jammy. Update to s6v3. Remove opencl packages (bundled with plex).
    • 18.07.22: - Pin all opencl related driver packages.
    • 16.05.22: - Pin opencl version.
    • 04.03.22: - Increase verbosity of video device permissions fix, attempt to fix missing group rw.
    • 25.12.21: - Install Intel drivers from the official repo.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 10.12.20: - Add latest Intel Compute packages from github repo for opencl support on latest gen igpu.
    • 23.11.20: - Add Bionic branch make Focal default.
    • 03.05.20: - Update exposed ports and example docs for bridge mode.
    • 23.03.20: - Remove udev hack (no longer needed), suppress uuid error in log during first start.
    • 04.12.19: - Add variable for setting PLEX_CLAIM. Remove /transcode volume mapping as it is now set via plex gui and defaults to a location under /config.
    • 06.08.19: - Add variable for setting UMASK.
    • 10.07.19: - Fix permissions for tuner (/dev/dvb) devices.
    • 20.05.19: - Bugfix do not allow Root group for Intel QuickSync ownership rules.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 22.03.19: - Fix update logic for VERSION=public.
    • 14.03.19: - Switch to new api endpoints, enable beta (plex pass) updates for armhf and aarch64.
    • 15.02.19: - Clean up plex pid after unclean stop.
    • 11.02.19: - Fix nvidia variables, add device variables.
    • 16.01.19: - Add pipeline logic, multi arch, and HW transcoding configuration; remove avahi service.
    • 07.09.18: - Rebase to ubuntu bionic, add udev package.
    • 09.12.17: - Fix continuation lines.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 28.05.17: - Add unrar package as per requests, for subzero plugin.
    • 11.01.17: - Use Plex environment variables from pms docker, change abc home folder to /app to alleviate usermod chowning library
    • 03.01.17: - Use case insensitive version variable matching rather than export and make lowercase.
    • 17.10.16: - Allow use of uppercase version variable
    • 01.10.16: - Add TZ info to README.
    • 09.09.16: - Add layer badges to README.
    • 27.08.16: - Add badges to README.
    • 22.08.16: - Rebased to xenial and s6 overlay
    • 07.04.16: - removed /transcode volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMS
    • 24.09.15: - added optional support for volume transcoding (/transcode), and various typo fixes.
    • 17.09.15: - Changed to run chmod only once
    • 19.09.15: - Plex updated their download servers from http to https
    • 28.08.15: - Removed plexpass from routine, and now uses VERSION as a combination fix.
    • 18.07.15: - Moved autoupdate to be hosted by linuxserver.io and implemented bugfix thanks to ljm42.
    • 09.07.15: - Now with ability to pick static version number.
    • 08.07.15: - Now with autoupdates. (Hosted by fanart.tv)
    • 03.07.15: - Fixed a mistake that allowed plex to run as user plex rather than abc (99:100). Thanks to double16 for spotting this.
    "},{"location":"images/docker-projectsend/","title":"projectsend","text":""},{"location":"images/docker-projectsend/#linuxserverprojectsend","title":"linuxserver/projectsend","text":"

    Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files.

    "},{"location":"images/docker-projectsend/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-projectsend/#application-setup","title":"Application Setup","text":"

    IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27

    Requires a user and database in either mysql or mariadb.

    To use translations, follow the instructions here. The necessary paths are symlinked under /config/translations (note that the \"templates\" paths don't need lang subdirectories).

    More info at ProjectSend.

    "},{"location":"images/docker-projectsend/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-projectsend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nprojectsend:\nimage: lscr.io/linuxserver/projectsend:latest\ncontainer_name: projectsend\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- MAX_UPLOAD=5000\nvolumes:\n- <path to data>:/config\n- <path to data>:/data\nports:\n- 80:80\nrestart: unless-stopped\n
    "},{"location":"images/docker-projectsend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=projectsend \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e MAX_UPLOAD=5000 \\\n-p 80:80 \\\n-v <path to data>:/config \\\n-v <path to data>:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/projectsend:latest\n
    "},{"location":"images/docker-projectsend/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-projectsend/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-projectsend/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAX_UPLOAD=5000 To set maximum upload size (in MB), default if unset is 5000."},{"location":"images/docker-projectsend/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where to store projectsend config files. /data Where to store files to share."},{"location":"images/docker-projectsend/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-projectsend/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-projectsend/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-projectsend/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-projectsend/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-projectsend/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it projectsend /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f projectsend
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' projectsend
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/projectsend:latest
    "},{"location":"images/docker-projectsend/#versions","title":"Versions","text":"
    • 23.08.22: - Add translation support
    • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
    • 24.06.21: - Rebasing to alpine 3.14, switch to nginx
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 31.12.19: - Rebase to Alpine 3.11 and upgrade to PHP7.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch.
    • 11.06.17: - Fetch version from github.
    • 09.12.17: - Rebase to alpine 3.7.
    • 13.06.17: - Initial Release.
    "},{"location":"images/docker-prowlarr/","title":"prowlarr","text":""},{"location":"images/docker-prowlarr/#linuxserverprowlarr","title":"linuxserver/prowlarr","text":"

    Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, and Readarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

    "},{"location":"images/docker-prowlarr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-prowlarr/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Prowlarr stable releases develop \u2705 Prowlarr releases from their develop branch nightly \u2705 Prowlarr releases from their nightly branch"},{"location":"images/docker-prowlarr/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:9696, for more information check out Prowlarr.

    Setup info can be found here.

    "},{"location":"images/docker-prowlarr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-prowlarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nprowlarr:\nimage: lscr.io/linuxserver/prowlarr:latest\ncontainer_name: prowlarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\nports:\n- 9696:9696\nrestart: unless-stopped\n
    "},{"location":"images/docker-prowlarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=prowlarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 9696:9696 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/prowlarr:latest\n
    "},{"location":"images/docker-prowlarr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-prowlarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 9696 The port for the Prowlarr webinterface"},{"location":"images/docker-prowlarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Prowlarr"},{"location":"images/docker-prowlarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and Prowlarr configs"},{"location":"images/docker-prowlarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-prowlarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-prowlarr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-prowlarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-prowlarr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-prowlarr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it prowlarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f prowlarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' prowlarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/prowlarr:latest
    "},{"location":"images/docker-prowlarr/#versions","title":"Versions","text":"
    • 03.01.23: - Publish stable release.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 06.06.21: - Initial realease.
    "},{"location":"images/docker-pwndrop/","title":"pwndrop","text":""},{"location":"images/docker-pwndrop/#linuxserverpwndrop","title":"linuxserver/pwndrop","text":"

    Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.

    "},{"location":"images/docker-pwndrop/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pwndrop/#application-setup","title":"Application Setup","text":"

    Access the web gui at http://<your-ip>:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one).

    "},{"location":"images/docker-pwndrop/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pwndrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npwndrop:\nimage: lscr.io/linuxserver/pwndrop:latest\ncontainer_name: pwndrop\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SECRET_PATH=/pwndrop #optional\nvolumes:\n- /path/to/appdata:/config\nports:\n- 8080:8080\nrestart: unless-stopped\n
    "},{"location":"images/docker-pwndrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pwndrop \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SECRET_PATH=/pwndrop `#optional` \\\n-p 8080:8080 \\\n-v /path/to/appdata:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pwndrop:latest\n
    "},{"location":"images/docker-pwndrop/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pwndrop/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 web gui"},{"location":"images/docker-pwndrop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SECRET_PATH=/pwndrop Secret path for admin access. Defaults to /pwndrop. This parameter only takes effect during initial install; it can later be changed in the web gui."},{"location":"images/docker-pwndrop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration and data."},{"location":"images/docker-pwndrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pwndrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pwndrop/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pwndrop/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pwndrop/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pwndrop/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pwndrop /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pwndrop
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pwndrop
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pwndrop:latest
    "},{"location":"images/docker-pwndrop/#versions","title":"Versions","text":"
    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 17.04.20: - Initial Release.
    "},{"location":"images/docker-pydio-cells/","title":"pydio-cells","text":""},{"location":"images/docker-pydio-cells/#linuxserverpydio-cells","title":"linuxserver/pydio-cells","text":"

    Pydio-cells is the nextgen file sharing platform for organizations. It is a full rewrite of the Pydio project using the Go language following a micro-service architecture.

    "},{"location":"images/docker-pydio-cells/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pydio-cells/#application-setup","title":"Application Setup","text":"

    You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended.

    Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying.

    "},{"location":"images/docker-pydio-cells/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-pydio-cells/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pydio-cells/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npydio-cells:\nimage: lscr.io/linuxserver/pydio-cells:latest\ncontainer_name: pydio-cells\nhostname: pydio-cells\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- EXTERNALURL=yourdomain.url\n- SERVER_IP=0.0.0.0 #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 8080:8080\n- 33060:33060 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-pydio-cells/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pydio-cells \\\n--hostname=pydio-cells \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e EXTERNALURL=yourdomain.url \\\n-e SERVER_IP=0.0.0.0 `#optional` \\\n-p 8080:8080 \\\n-p 33060:33060 `#optional` \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pydio-cells:latest\n
    "},{"location":"images/docker-pydio-cells/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pydio-cells/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Http port 33060 gRPC port (required for CellsSync)."},{"location":"images/docker-pydio-cells/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. EXTERNALURL=yourdomain.url The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT). SERVER_IP=0.0.0.0 Enter the LAN IP of the docker server. Required for local access by IP, added to self signed cert as SAN (not required if accessing only through reverse proxy)."},{"location":"images/docker-pydio-cells/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config All the config files reside here."},{"location":"images/docker-pydio-cells/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= Pydio Cells uses the hostname to verify local files. This setting is required and should not be changed after it has been set."},{"location":"images/docker-pydio-cells/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pydio-cells/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pydio-cells/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pydio-cells/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pydio-cells/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pydio-cells /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio-cells
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio-cells
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio-cells:latest
    "},{"location":"images/docker-pydio-cells/#versions","title":"Versions","text":"
    • 01.12.22: - Rebasing to alpine 3.17. Adding multi-arch support. Updating cli arguments for v4 compatibility.
    • 19.10.22: - Rebasing to alpine 3.16. Upgrading to s6v3. Updating build instructions for v4.
    • 19.09.22: - Rebasing to alpine 3.15.
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 18.04.20: - Switch to https as default (only affects new installs). Add self signed cert, add SERVER_IP var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync.
    • 17.04.20: - Update compile options, previous release was broken for new installs.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 12.12.19: - Initial Release
    "},{"location":"images/docker-pydio/","title":"pydio","text":""},{"location":"images/docker-pydio/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated.

    "},{"location":"images/docker-pydio/#linuxserverpydio","title":"linuxserver/pydio","text":"

    Pydio (formerly AjaXplorer) is a mature open source software solution for file sharing and synchronization. With intuitive user interfaces (web / mobile / desktop), Pydio provides enterprise-grade features to gain back control and privacy of your data: user directory connectors, legacy filesystems drivers, comprehensive admin interface, and much more.

    "},{"location":"images/docker-pydio/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-pydio/#usage","title":"Usage","text":"

    Here are some example snippets to help you get started creating a container from this image.

    "},{"location":"images/docker-pydio/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

    Compatible with docker-compose v2 schemas.

    ---\nversion: \"2.1\"\nservices:\npydio:\nimage: lscr.io/linuxserver/pydio\ncontainer_name: pydio\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\n- <path to data>:/data\nports:\n- 443:443\nrestart: unless-stopped\n
    "},{"location":"images/docker-pydio/#docker-cli","title":"docker cli","text":"
    docker run -d \\\n  --name=pydio \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 443:443 \\\n  -v <path to data>:/config \\\n  -v <path to data>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/pydio\n
    "},{"location":"images/docker-pydio/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pydio/#ports-p","title":"Ports (-p)","text":"Parameter Function 443 WebUI"},{"location":"images/docker-pydio/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-pydio/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where pydio should store it's configuration files. /data Where pydio should store uploaded files."},{"location":"images/docker-pydio/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pydio/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pydio/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pydio/#application-setup","title":"Application Setup","text":"

    THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead.

    You must create a user and database for pydio to use in a mysql/mariadb or postgresql server. You can use sqlite with no further config needed, but this should only be considered for testing purposes. In the setup page for database, use the ip address rather than hostname...

    Self-signed keys are generated the first time you run the container and can be found in /config/keys , if needed, you can replace them with your own.

    For public link sharing to function correctly be sure to change the Detected Server Url to the URL of your pydio instance in the setup wizard.

    For email settings edit the file /config/ssmtp.conf and restart the container.

    "},{"location":"images/docker-pydio/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pydio/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pydio /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pydio
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio
    "},{"location":"images/docker-pydio/#versions","title":"Versions","text":"
    • 23.01.21: - Rebasing to alpine 3.13.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 11.02.19: - Add pipeline logic and multi arch, rebase to alpine 3.8.
    • 12.01.18: - Rebase to alpine linux 3.7.
    • 28.10.17: - php7-ssh2 moved from testing to community repo.
    • 25.05.17: - Rebase to alpine linux 3.6.
    • 17.05.17: - Make default install pydio 8.
    • 03.05.17: - Use repo pinning to better solve dependencies, use repo version of php7-imagick.
    • 28.02.17: - Modify sed for data path.
    • 18.02.17: - Rebase to alpine linux 3.5.
    • 05.11.16: - Pinned at latest sourceforge download version, in lieu of a full rewrite.
    • 14.10.16: - Add version layer information.
    • 10.09.16: - Add layer badges to README.
    • 08.09.15: - Initial Release.
    "},{"location":"images/docker-pyload-ng/","title":"pyload-ng","text":""},{"location":"images/docker-pyload-ng/#linuxserverpyload-ng","title":"linuxserver/pyload-ng","text":"

    pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    "},{"location":"images/docker-pyload-ng/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pyload-ng/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable releases from pyLoad Next develop \u2705 Releases from pyload Next develop branch"},{"location":"images/docker-pyload-ng/#application-setup","title":"Application Setup","text":"

    Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload

    For general usage please see the pyLoad wiki here .

    "},{"location":"images/docker-pyload-ng/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pyload-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npyload-ng:\nimage: lscr.io/linuxserver/pyload-ng:latest\ncontainer_name: pyload-ng\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/downloads:/downloads\nports:\n- 8000:8000\n- 9666:9666 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-pyload-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pyload-ng \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8000:8000 \\\n-p 9666:9666 `#optional` \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/downloads:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pyload-ng:latest\n
    "},{"location":"images/docker-pyload-ng/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pyload-ng/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Allows HTTP access to the application 9666 Click'n'Load port."},{"location":"images/docker-pyload-ng/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-pyload-ng/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads"},{"location":"images/docker-pyload-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pyload-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pyload-ng/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pyload-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pyload-ng/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pyload-ng/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pyload-ng /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload-ng
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload-ng
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload-ng:latest
    "},{"location":"images/docker-pyload-ng/#versions","title":"Versions","text":"
    • 02.02.22: - Rebase master to alpine 3.17.
    • 02.02.22: - Add ffmpeg for the Youtube plugin.
    • 24.01.22: - Replace unrar with p7zip.
    • 24.01.22: - Initial release.
    "},{"location":"images/docker-pyload/","title":"pyload","text":""},{"location":"images/docker-pyload/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

    This image is deprecated. We will not offer support for this image and it will not be updated. We recommend our new pyload-ng image instead: https://github.com/linuxserver/docker-pyload-ng/

    "},{"location":"images/docker-pyload/#linuxserverpyload","title":"linuxserver/pyload","text":"

    Pyload is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

    "},{"location":"images/docker-pyload/#supported-architectures","title":"Supported Architectures","text":"

    Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-pyload/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

    Tag Description latest Stable releases from Pyload ng Development releases from Pyload-ng (currently alpha)"},{"location":"images/docker-pyload/#application-setup","title":"Application Setup","text":"

    Access the web interface at http://your-ip:8000 the default login is: username - admin password - password

    For the ng tag, the default user/pass are pyload/pyload.

    For general usage please see the pyLoad wiki here .

    "},{"location":"images/docker-pyload/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pyload/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npyload:\nimage: lscr.io/linuxserver/pyload\ncontainer_name: pyload\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/pyload/config:/config\n- /path/to/downloads:/downloads\nports:\n- 8000:8000\n- 7227:7227 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-pyload/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pyload \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8000:8000 \\\n-p 7227:7227 `#optional` \\\n-v /path/to/pyload/config:/config \\\n-v /path/to/downloads:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pyload\n
    "},{"location":"images/docker-pyload/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pyload/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Allows HTTP access to the application 7227 pyLoad control port"},{"location":"images/docker-pyload/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-pyload/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config pyLoad Configuration and files database /downloads Destination of pyLoad downloads"},{"location":"images/docker-pyload/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pyload/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pyload/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pyload/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pyload/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pyload/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pyload /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pyload
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload
    "},{"location":"images/docker-pyload/#versions","title":"Versions","text":"
    • 25.01.22: - Deprecate.
    • 23.02.21: - Add Python plugin passlib.
    • 16.02.21: - Publish ng tag for pyload-ng (currently alpha).
    • 04.11.20: - Rebase to alpine 3.11.
    • 18.10.20: - Chown app folder to fix plugin updater.
    • 18.07.19: - Add ffmpeg for plugins the do video processing.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 08.06.19: - Initial release.
    "},{"location":"images/docker-pylon/","title":"pylon","text":""},{"location":"images/docker-pylon/#linuxserverpylon","title":"linuxserver/pylon","text":"

    Pylon is a web based integrated development environment built with Node.js as a backend and with a supercharged JavaScript/HTML5 frontend, licensed under GPL version 3. This project originates from Cloud9 v2 project.

    "},{"location":"images/docker-pylon/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-pylon/#application-setup","title":"Application Setup","text":"

    Access the webui at http://your-ip:3131, more information here.

    "},{"location":"images/docker-pylon/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-pylon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\npylon:\nimage: lscr.io/linuxserver/pylon:latest\ncontainer_name: pylon\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- GITURL=https://github.com/linuxserver/docker-pylon.git #optional\n- PYUSER=myuser #optional\n- PYPASS=mypass #optional\nvolumes:\n- <path to your code>:/code #optional\nports:\n- 3131:3131\nrestart: unless-stopped\n
    "},{"location":"images/docker-pylon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=pylon \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e GITURL=https://github.com/linuxserver/docker-pylon.git `#optional` \\\n-e PYUSER=myuser `#optional` \\\n-e PYPASS=mypass `#optional` \\\n-p 3131:3131 \\\n-v <path to your code>:/code `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/pylon:latest\n
    "},{"location":"images/docker-pylon/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-pylon/#ports-p","title":"Ports (-p)","text":"Parameter Function 3131 The port for the Pylon web interface"},{"location":"images/docker-pylon/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-pylon.git Specify a git repo to checkout on first startup PYUSER=myuser Specify a basic auth user. PYPASS=mypass Specify a basic auth password."},{"location":"images/docker-pylon/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /code Optionally if you want the bind mount your own code and have changes survive container upgrades."},{"location":"images/docker-pylon/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-pylon/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-pylon/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-pylon/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-pylon/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-pylon/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it pylon /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f pylon
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pylon
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pylon:latest
    "},{"location":"images/docker-pylon/#versions","title":"Versions","text":"
    • 19.01.22: - Rebasing to alpine 3.15.
    • 02.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 19.09.19: - Initial Release.
    "},{"location":"images/docker-qbittorrent/","title":"qbittorrent","text":""},{"location":"images/docker-qbittorrent/#linuxserverqbittorrent","title":"linuxserver/qbittorrent","text":"

    The Qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.

    "},{"location":"images/docker-qbittorrent/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-qbittorrent/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable qbittorrent releases libtorrentv1 \u2705 Static qbittorrent builds using libtorrent v1"},{"location":"images/docker-qbittorrent/#application-setup","title":"Application Setup","text":"

    The webui is at <your-ip>:8080 and the default username/password is admin/adminadmin.

    Change username/password via the webui in the webui section of settings.

    "},{"location":"images/docker-qbittorrent/#webui_port-variable","title":"WEBUI_PORT variable","text":"

    Due to issues with CSRF and port mapping, should you require to alter the port for the webui you need to change both sides of the -p 8080 switch AND set the WEBUI_PORT variable to the new port.

    For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090

    This should alleviate the \"white screen\" issue.

    If you have no webui , check the file /config/qBittorrent/qBittorrent.conf

    edit or add the following lines

    WebUI\\Address=*\n\nWebUI\\ServerDomains=*\n

    If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method

    "},{"location":"images/docker-qbittorrent/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-qbittorrent/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nqbittorrent:\nimage: lscr.io/linuxserver/qbittorrent:latest\ncontainer_name: qbittorrent\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- WEBUI_PORT=8080\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/downloads:/downloads\nports:\n- 8080:8080\n- 6881:6881\n- 6881:6881/udp\nrestart: unless-stopped\n
    "},{"location":"images/docker-qbittorrent/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=qbittorrent \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e WEBUI_PORT=8080 \\\n-p 8080:8080 \\\n-p 6881:6881 \\\n-p 6881:6881/udp \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/downloads:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/qbittorrent:latest\n
    "},{"location":"images/docker-qbittorrent/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-qbittorrent/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 6881 tcp connection port 6881/udp udp connection port"},{"location":"images/docker-qbittorrent/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London WEBUI_PORT=8080 for changing the port of the webui, see below for explanation"},{"location":"images/docker-qbittorrent/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /downloads Location of downloads on disk."},{"location":"images/docker-qbittorrent/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-qbittorrent/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-qbittorrent/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-qbittorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-qbittorrent/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-qbittorrent/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it qbittorrent /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qbittorrent
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qbittorrent
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qbittorrent:latest
    "},{"location":"images/docker-qbittorrent/#versions","title":"Versions","text":"
    • 29.11.22: - Add openssl1.1-compat for qbittorrent-cli.
    • 31.10.22: - Add libtorrentv1 branch.
    • 31.08.22: - Rebase to Alpine Edge again to follow latest releases.
    • 12.08.22: - Bump unrar to 6.1.7.
    • 16.06.22: - Rebase to Alpine 3.16 from edge.
    • 25.05.22: - Fetch qbitorrent-cli from upstream repo.
    • 02.03.22: - Add unrar, 7zip, and qbitorrent-cli.
    • 01.03.22: - Add python for search plugin support.
    • 23.02.22: - Rebase to Alpine Edge, install from Alpine repos.
    • 19.02.22: - Add jq to build-stage
    • 07.01.22: - Rebase to Alpine, build from source.
    • 06.01.22: - Deprecate unstable branch.
    • 10.02.21: - Rebase to focal.
    • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 12.11.20: - Stop creating /config/data directory on startup
    • 03.04.20: - Fix adding search engine plugin
    • 02.08.19: - Add qbitorrent-cli for processing scripts.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 14.01.19: - Rebase to Ubuntu, add multi arch and pipeline logic.
    • 25.09.18: - Use buildstage type build, bump qbitorrent to 4.1.3.
    • 14.08.18: - Rebase to alpine 3.8, bump libtorrent to 1.1.9 and qbitorrent to 4.1.2.
    • 08.06.18: - Bump qbitorrent to 4.1.1.
    • 26.04.18: - Bump libtorrent to 1.1.7.
    • 02.03.18: - Bump qbitorrent to 4.0.4 and libtorrent to 1.1.6.
    • 02.01.18: - Deprecate cpu_core routine lack of scaling.
    • 19.12.17: - Update to v4.0.3.
    • 09.02.17: - Rebase to alpine 3.7
    • 01.12.17: - Update to v4.0.2.
    • 27.11.17: - Update to v4 and use cpu_core routine to speed up builds.
    • 16.09.17: - Bump to 3.3.16, Add WEBUI_PORT variable and notes to README to allow changing port of webui.
    • 01.08.17: - Initial Release.
    • 12.02.18: - Initial Release.
    "},{"location":"images/docker-qdirstat/","title":"qdirstat","text":""},{"location":"images/docker-qdirstat/#linuxserverqdirstat","title":"linuxserver/qdirstat","text":"

    QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.

    "},{"location":"images/docker-qdirstat/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-qdirstat/#application-setup","title":"Application Setup","text":"

    The application can be accessed at:

    • http://yourhost:3000/

    By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

    • http://yourhost:3000/?login=true
    "},{"location":"images/docker-qdirstat/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-qdirstat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nqdirstat:\nimage: lscr.io/linuxserver/qdirstat:latest\ncontainer_name: qdirstat\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/data:/data\nports:\n- 3000:3000\nrestart: unless-stopped\n
    "},{"location":"images/docker-qdirstat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=qdirstat \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n-v /path/to/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/qdirstat:latest\n
    "},{"location":"images/docker-qdirstat/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-qdirstat/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 QdirStat desktop gui."},{"location":"images/docker-qdirstat/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-qdirstat/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores qdirstat settings and scans. /data Data you want to analyze disk usage information of."},{"location":"images/docker-qdirstat/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-qdirstat/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-qdirstat/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-qdirstat/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-qdirstat/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-qdirstat/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it qdirstat /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f qdirstat
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qdirstat
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qdirstat:latest
    "},{"location":"images/docker-qdirstat/#versions","title":"Versions","text":"
    • 16.12.22: - Rebase to Jammy.
    • 06.04.22: - Add xfce terminal.
    • 13.01.22: - Compile from source.
    • 11.01.22: - Initial release.
    "},{"location":"images/docker-quassel-core/","title":"quassel-core","text":""},{"location":"images/docker-quassel-core/#linuxserverquassel-core","title":"linuxserver/quassel-core","text":"

    Quassel-core is a modern, cross-platform, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core.

    This container handles the IRC connection (quasselcore) and requires a desktop client (quasselclient) to be used and configured. It is designed to be always on and will keep your identity present in IRC even when your clients cannot be online. Backlog (history) is downloaded by your client upon reconnection allowing infinite scrollback through time.

    "},{"location":"images/docker-quassel-core/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-quassel-core/#application-setup","title":"Application Setup","text":"

    Quassel wiki: quassel

    A great place to host a quassel instance is a VPS, such as DigitalOcean. For $5 a month you can have a 24/7 IRC connection and be up and running in under 55 seconds (or so they claim).

    Once you have the container running, fire up a quassel desktop client and connect to your new core instance using your droplets public IP address and the port you specified in your docker run command default: 4242. Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect.

    You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io. That's it, you're done.

    "},{"location":"images/docker-quassel-core/#stateless-usage","title":"Stateless usage","text":"

    To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting.

    Env Usage DB_BACKEND SQLite or PostgreSQL DB_PGSQL_USERNAME PostgreSQL User DB_PGSQL_PASSWORD PostgreSQL Password DB_PGSQL_HOSTNAME PostgreSQL Host DB_PGSQL_PORT PostgreSQL Port AUTH_AUTHENTICATOR Database or LDAP AUTH_LDAP_HOSTNAME LDAP Host AUTH_LDAP_PORT LDAP Port AUTH_LDAP_BIND_DN LDAP Bind Domain AUTH_LDAP_BIND_PASSWORD LDAP Password AUTH_LDAP_FILTER LDAP Authentication Filters AUTH_LDAP_UID_ATTRIBUTE LDAP UID

    Additionally you have RUN_OPTS that can be used to customize pathing and behvior.

    Option Example --strict-ident strictly bool --strict-ident --ident-daemon strictly bool --ident-daemon --ident-port --ident-port \"10113\" --ident-listen --ident-listen \"::,0.0.0.0\" --ssl-cert --ssl-cert /config/keys/cert.crt --ssl-key --ssl-key /config/keys/cert.key --require-ssl strictly bool --require-ssl

    Minimal example with SQLite:

    docker create \\\n  --name=quassel-core \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e RUN_OPTS='--config-from-environment' \\\n  -e DB_BACKEND=SQLite \\\n  -e AUTH_AUTHENTICATOR=Database \\\n  -p 4242:4242 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/quassel-core\n
    "},{"location":"images/docker-quassel-core/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-quassel-core/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nquassel-core:\nimage: lscr.io/linuxserver/quassel-core:latest\ncontainer_name: quassel-core\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- RUN_OPTS=--config-from-environment #optional\nvolumes:\n- <path to data>:/config\nports:\n- 4242:4242\n- 113:10113 #optional\nrestart: unless-stopped\n
    "},{"location":"images/docker-quassel-core/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=quassel-core \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e RUN_OPTS=--config-from-environment `#optional` \\\n-p 4242:4242 \\\n-p 113:10113 `#optional` \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/quassel-core:latest\n
    "},{"location":"images/docker-quassel-core/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-quassel-core/#ports-p","title":"Ports (-p)","text":"Parameter Function 4242 The port quassel-core listens for connections on. 10113 Optional Ident Port"},{"location":"images/docker-quassel-core/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS=--config-from-environment Custom CLI options for Quassel"},{"location":"images/docker-quassel-core/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and quassel-core configuration storage."},{"location":"images/docker-quassel-core/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-quassel-core/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-quassel-core/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-quassel-core/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-quassel-core/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-quassel-core/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it quassel-core /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-core
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-core
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-core:latest
    "},{"location":"images/docker-quassel-core/#versions","title":"Versions","text":"
    • 03.01.22: - Rebase to alpine 3.15. Add new build deps and apply other fixes for 0.14.
    • 07.08.21: - Fixing incorrect database password variable operator.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 20.03.19: - Make stateless operation an option, with input from one of the quassel team.
    • 26.01.19: - Add pipeline logic and multi arch.
    • 08.01.19: - Rebase to Ubuntu Bionic and upgrade to Quassel0.13.0 See here..
    • 30.07.18: - Rebase to alpine:3.8 and use buildstage.
    • 03.01.18: - Deprecate cpu_core routine lack of scaling.
    • 09.12.17: - Rebase to alpine:3.7.
    • 26.11.17: - Use cpu core counting routine to speed up build time.
    • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
    • 27.05.17: - Rebase to alpine:3.6.
    • 13.05.17: - Switch to git source.
    • 28.12.16: - Rebase to alpine:3.5.
    • 23.11.16: - Rebase to alpine:edge.
    • 23.09.16: - Use QT5 dependencies (thanks bauerj).
    • 10.09.16: - Add layer badges to README.
    • 28.08.16: - Add badges to README.
    • 10.08.16: - Rebase to xenial.
    • 14.10.15: - Removed the webui, turned out to be to unstable for most usecases.
    • 01.09.15: - Fixed mistake in README.
    • 30.07.15: - Switched to internal baseimage, and fixed a bug with updating the webinterface.
    • 06.07.15: - Enabled BLOWFISH encryption and added a (optional) webinterface, for the times you dont have access to your client.
    "},{"location":"images/docker-quassel-web/","title":"quassel-web","text":""},{"location":"images/docker-quassel-web/#linuxserverquassel-web","title":"linuxserver/quassel-web","text":"

    Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.

    "},{"location":"images/docker-quassel-web/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-quassel-web/#application-setup","title":"Application Setup","text":"

    By default this container webui will be available on https://$SERVER_IP:64443. To setup this container you can either use the envrionment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at:

    /config/settings-user.js\n

    "},{"location":"images/docker-quassel-web/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

    This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

    "},{"location":"images/docker-quassel-web/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-quassel-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nquassel-web:\nimage: lscr.io/linuxserver/quassel-web:latest\ncontainer_name: quassel-web\nenvironment:\n- PUID=1000\n- PGID=1000\n- QUASSEL_CORE=192.168.1.10\n- QUASSEL_PORT=4242\n- URL_BASE=/quassel #optional\nvolumes:\n- /path/to/data:/config\nports:\n- 64443:64443\nrestart: unless-stopped\n
    "},{"location":"images/docker-quassel-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=quassel-web \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e QUASSEL_CORE=192.168.1.10 \\\n-e QUASSEL_PORT=4242 \\\n-e URL_BASE=/quassel `#optional` \\\n-p 64443:64443 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/quassel-web:latest\n
    "},{"location":"images/docker-quassel-web/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-quassel-web/#ports-p","title":"Ports (-p)","text":"Parameter Function 64443 Quassel-web https webui"},{"location":"images/docker-quassel-web/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation QUASSEL_CORE=192.168.1.10 specify the URL or IP address of your Quassel Core instance QUASSEL_PORT=4242 specify the port of your Quassel Core instance URL_BASE=/quassel Specify a url-base in reverse proxy setups ie. /quassel"},{"location":"images/docker-quassel-web/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store config on the docker host"},{"location":"images/docker-quassel-web/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-quassel-web/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-quassel-web/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-quassel-web/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-quassel-web/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-quassel-web/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it quassel-web /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f quassel-web
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-web
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-web:latest
    "},{"location":"images/docker-quassel-web/#versions","title":"Versions","text":"
    • 12.02.22: - Rebasing to alpine 3.15.
    • 01.06.20: - Rebasing to alpine 3.12.
    • 19.12.19: - Rebasing to alpine 3.11.
    • 28.06.19: - Rebasing to alpine 3.10.
    • 18.05.19: - Reconfigure environmental variable setup.
    • 28.04.19: - Initial Release.
    "},{"location":"images/docker-radarr/","title":"radarr","text":""},{"location":"images/docker-radarr/#linuxserverradarr","title":"linuxserver/radarr","text":"

    Radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato.

    "},{"location":"images/docker-radarr/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-radarr/#version-tags","title":"Version Tags","text":"

    This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

    Tag Available Description latest \u2705 Stable Radarr releases develop \u2705 Radarr releases from their develop branch nightly \u2705 Radarr releases from their nightly branch"},{"location":"images/docker-radarr/#application-setup","title":"Application Setup","text":"

    Access the webui at <your-ip>:7878, for more information check out Radarr.

    "},{"location":"images/docker-radarr/#media-folders","title":"Media folders","text":"

    We have set /movies and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

    Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

    The folks over at servarr.com wrote a good write-up on how to get started with this.

    "},{"location":"images/docker-radarr/#usage","title":"Usage","text":"

    To help you get started creating a container from this image you can either use docker-compose or the docker cli.

    "},{"location":"images/docker-radarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
    ---\nversion: \"2.1\"\nservices:\nradarr:\nimage: lscr.io/linuxserver/radarr:latest\ncontainer_name: radarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/movies:/movies #optional\n- /path/to/downloadclient-downloads:/downloads #optional\nports:\n- 7878:7878\nrestart: unless-stopped\n
    "},{"location":"images/docker-radarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
    docker run -d \\\n--name=radarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 7878:7878 \\\n-v /path/to/data:/config \\\n-v /path/to/movies:/movies `#optional` \\\n-v /path/to/downloadclient-downloads:/downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/radarr:latest\n
    "},{"location":"images/docker-radarr/#parameters","title":"Parameters","text":"

    Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

    "},{"location":"images/docker-radarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 7878 The port for the Radarr webinterface"},{"location":"images/docker-radarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Radarr"},{"location":"images/docker-radarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and Radarr configs /movies Location of Movie library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-radarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-radarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

    You can set any environment variable from a file by using a special prepend FILE__.

    As an example:

    -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

    Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

    "},{"location":"images/docker-radarr/#umask-for-running-applications","title":"Umask for running applications","text":"

    For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

    "},{"location":"images/docker-radarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

    When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

    Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

    In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

      $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
    "},{"location":"images/docker-radarr/#docker-mods","title":"Docker Mods","text":"

    We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

    "},{"location":"images/docker-radarr/#support-info","title":"Support Info","text":"
    • Shell access whilst the container is running:
    • docker exec -it radarr /bin/bash
    • To monitor the logs of the container in realtime:
    • docker logs -f radarr
    • Container version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' radarr
    • Image version number
    • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/radarr:latest
    "},{"location":"images/docker-radarr/#versions","title":"Versions","text":"
    • 06.06.22: - Rebase master branch to Alpine 3.15.
    • 20.02.22: - Rebase develop branch to Alpine.
    • 04.02.22: - Rebase nightly branch to Alpine and deprecate nightly-alpine branch.
    • 27.12.21: - Add nightly-alpine branch.
    • 17.10.21: - Remove UMASK_SET.
    • 08.05.21: - Make the paths clearer to the user
    • 17.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
    • 11.30.20: - Publish develop tag.
    • 11.28.20: - Switch to v3 .NET CORE builds (no more mono, 5.14 tag is deprecated). Rebase to Focal (for issues on arm32v7, see here).
    • 05.04.20: - Move app to /app.
    • 01.08.19: - Rebase to Linuxserver LTS mono version.
    • 13.06.19: - Add env variable for setting umask.
    • 10.05.19: - Rebase to Bionic.
    • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
    • 09.09.18: - Add pipeline build process.
    • 24.02.18: - Add nightly branch.
    • 06.02.18: - Radarr repo changed owner.
    • 15.12.17: - Fix continuation lines.
    • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
    • 13.04.17: - Switch to official mono repository.
    • 10.01.17: - Initial Release.
    "},{"location":"images/docker-raneto/","title":"raneto","text":""},{"location":"images/docker-raneto/#linuxserverraneto","title":"linuxserver/raneto","text":"

    Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.

    "},{"location":"images/docker-raneto/#supported-architectures","title":"Supported Architectures","text":"

    We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

    Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

    The architectures supported by this image are:

    Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-raneto/#application-setup","title":"Application Setup","text":"

    Access the webui at http://:3000

    The default username and password is admin/password

    This application can only be configured through file storage the web interface is only for editing Markdown files. You need to understand the following paths and the role they play for the application:

    • /config/config.default.js - Main configuration file to setup your user, site name, etc.
    • /config/content - All of your Markdown files go here more info.
    • /config/images - This folder will serve content on http://:3000/images/.png you can put anything in here but it is specifically for image files so you can embed them in your Markdown files without using external hosting."},{"location":"images/docker-raneto/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-raneto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nraneto:\nimage: lscr.io/linuxserver/raneto:latest\ncontainer_name: raneto\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-raneto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=raneto \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/appdata:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/raneto:latest\n
      "},{"location":"images/docker-raneto/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-raneto/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 The port for the Raneto web interface"},{"location":"images/docker-raneto/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-raneto/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Raneto config and Markdown files"},{"location":"images/docker-raneto/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-raneto/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-raneto/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-raneto/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-raneto/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-raneto/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it raneto /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f raneto
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' raneto
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/raneto:latest
      "},{"location":"images/docker-raneto/#versions","title":"Versions","text":"
      • 10.08.22: - Rebasing to alpine 3.15.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 02.06.20: - Rebasing to alpine 3.11.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 01.06.19: - Initial Release.
      "},{"location":"images/docker-rdesktop/","title":"rdesktop","text":""},{"location":"images/docker-rdesktop/#linuxserverrdesktop","title":"linuxserver/rdesktop","text":"

      Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.

      "},{"location":"images/docker-rdesktop/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/rdesktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-rdesktop/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch"},{"location":"images/docker-rdesktop/#application-setup","title":"Application Setup","text":"

      The Default USERNAME and PASSWORD is: abc/abc

      Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

      You will need a Remote Desktop client to access this container Wikipedia List, by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389. The first thing you should do when you login to the container is to change the abc users password by issuing the passwd command.

      Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

      If you ever lose your password you can always reset it by execing into the container as root:

      docker exec -it rdesktop passwd abc\n
      By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.

      "},{"location":"images/docker-rdesktop/#hardware-acceleration-ubuntu-container-only","title":"Hardware Acceleration (Ubuntu Container Only)","text":"

      Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.

      "},{"location":"images/docker-rdesktop/#intelatiamd","title":"Intel/ATI/AMD","text":"

      To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

      --device=/dev/dri:/dev/dri\n
      We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

      "},{"location":"images/docker-rdesktop/#nvidia","title":"Nvidia","text":"

      Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

      We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

      "},{"location":"images/docker-rdesktop/#arm-devices","title":"Arm Devices","text":"

      Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.

      "},{"location":"images/docker-rdesktop/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-rdesktop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nrdesktop:\nimage: lscr.io/linuxserver/rdesktop:latest\ncontainer_name: rdesktop\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /var/run/docker.sock:/var/run/docker.sock #optional\n- /path/to/data:/config #optional\nports:\n- 3389:3389\ndevices:\n- /dev/dri:/dev/dri #optional\nshm_size: \"1gb\" #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-rdesktop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=rdesktop \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3389:3389 \\\n-v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n-v /path/to/data:/config `#optional` \\\n--device /dev/dri:/dev/dri `#optional` \\\n--shm-size=\"1gb\" `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/rdesktop:latest\n
      "},{"location":"images/docker-rdesktop/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-rdesktop/#ports-p","title":"Ports (-p)","text":"Parameter Function 3389 RDP access port"},{"location":"images/docker-rdesktop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-rdesktop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container /config abc users home directory"},{"location":"images/docker-rdesktop/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Add this for GL support (Linux hosts only)"},{"location":"images/docker-rdesktop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function as syscalls are unkown to Docker"},{"location":"images/docker-rdesktop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-rdesktop/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-rdesktop/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-rdesktop/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-rdesktop/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it rdesktop /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f rdesktop
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rdesktop
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rdesktop:latest
      "},{"location":"images/docker-rdesktop/#versions","title":"Versions","text":"
      • 27.10.22: - Rebase all Ubuntu images to Jammy 22.04.
      • 26.10.22: - Rebase Alpine xfce to 3.16, migrate to s6v3.
      • 05.03.22: - Organize tags differently to run Ubuntu at latest LTS, make Alpine latest, add docs about GPU accel.
      • 05.05.21: - Reduce default packages to their flavor specific basics.
      • 05.04.21: - Add Alpine flavor.
      • 06.04.20: - Start PulseAudio in images to support audio
      • 28.02.20: - Initial Releases
      "},{"location":"images/docker-readarr/","title":"readarr","text":""},{"location":"images/docker-readarr/#linuxserverreadarr","title":"linuxserver/readarr","text":"

      Readarr - Book Manager and Automation (Sonarr for Ebooks)

      "},{"location":"images/docker-readarr/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/readarr:nightly should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-readarr/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u274c nightly \u2705 Nightly Readarr releases"},{"location":"images/docker-readarr/#application-setup","title":"Application Setup","text":"

      Access the webui at <your-ip>:8787, for more information check out Readarr.

      "},{"location":"images/docker-readarr/#media-folders","title":"Media folders","text":"

      We have set /books and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

      Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

      The folks over at servarr.com wrote a good write-up on how to get started with this.

      "},{"location":"images/docker-readarr/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-readarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nreadarr:\nimage: lscr.io/linuxserver/readarr:nightly\ncontainer_name: readarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/books:/books #optional\n- /path/to/downloadclient-downloads:/downloads #optional\nports:\n- 8787:8787\nrestart: unless-stopped\n
      "},{"location":"images/docker-readarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=readarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8787:8787 \\\n-v /path/to/data:/config \\\n-v /path/to/books:/books `#optional` \\\n-v /path/to/downloadclient-downloads:/downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/readarr:nightly\n
      "},{"location":"images/docker-readarr/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-readarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 8787 The port for the Readarr webinterface"},{"location":"images/docker-readarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Readarr"},{"location":"images/docker-readarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and Readarr configs /books Location of Book library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-readarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-readarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-readarr/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-readarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-readarr/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-readarr/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it readarr /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f readarr
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' readarr
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/readarr:nightly
      "},{"location":"images/docker-readarr/#versions","title":"Versions","text":"
      • 21.01.22: - Remove chromaprint as it's no longer a required dependency.
      • 01.01.22: - Add chromaprint for audio fingerprinting.
      • 28.07.21: - Initial Release.
      "},{"location":"images/docker-readme-sync/","title":"readme-sync","text":""},{"location":"images/docker-readme-sync/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io more information at:- IRC Podcast Covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! Linuxserver.io Podcast

      The LinuxServer.io team brings you another image release featuring :-

      • regular and timely application updates
      • easy user mappings
      • custom base image with s6 overlay
      • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
      • security updates
      "},{"location":"images/docker-readme-sync/#lsiodevreadme-sync","title":"lsiodev/readme-sync","text":"

      Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.

      "},{"location":"images/docker-readme-sync/#usage","title":"Usage","text":"
      docker run --rm=true \\\n    -e DOCKERHUB_USERNAME=<USERNAME> \\\n    -e DOCKERHUB_PASSWORD=<PASSWORD> \\\n    -e GIT_REPOSITORY=<GITHUB REPO> \\\n    -e DOCKER_REPOSITORY=<DOCKERHUB REPO> \\\n    -e GIT_BRANCH=<GITHUB BRANCH> \\\n    lsiodev/readme-sync bash -c 'node sync'\n
      "},{"location":"images/docker-readme-sync/#parameters","title":"Parameters","text":"

      The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.

      Parameter Function -e DOCKERHUB_USERNAME your dockerhub username -e DOCKERHUB_PASSWORD your dockerhub password -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync -e GIT_BRANCH github repository branch, optional (default: master)

      \u00a0 It is based on alpine and is not meant to run as a service. The sync is performed and the command exits. \u00a0

      "},{"location":"images/docker-readme-sync/#versions","title":"Versions","text":"Date Changes 13.01.21 Use ghcr baseimages. Fall back to external folder for readme lite. 28.07.20 Rebase to alpine 3.12. 20.08.18 Rebase to alpine 3.8. 28.02.18 convert repo to use node.js implementation. 17.11.17 add github branch support. 16.10.16 merge ruby app. 11.10.16 Initial development release."},{"location":"images/docker-remmina/","title":"remmina","text":""},{"location":"images/docker-remmina/#linuxserverremmina","title":"linuxserver/remmina","text":"

      Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.

      "},{"location":"images/docker-remmina/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/remmina:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-remmina/#application-setup","title":"Application Setup","text":"

      The application can be accessed at:

      • http://yourhost:3000/

      By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

      • http://yourhost:3000/?login=true
      "},{"location":"images/docker-remmina/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-remmina/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nremmina:\nimage: lscr.io/linuxserver/remmina:latest\ncontainer_name: remmina\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-remmina/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=remmina \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/remmina:latest\n
      "},{"location":"images/docker-remmina/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-remmina/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Remmina desktop gui."},{"location":"images/docker-remmina/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-remmina/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings."},{"location":"images/docker-remmina/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-remmina/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-remmina/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-remmina/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-remmina/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-remmina/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it remmina /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f remmina
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' remmina
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/remmina:latest
      "},{"location":"images/docker-remmina/#versions","title":"Versions","text":"
      • 16.12.22: - Rebase to Jammy. Drop nx, xdmcp plugins due to lack of packages. Add Kiosk, Secret, x2go plugins.
      • 19.06.22: - Rebase to Focal. Drop Telepathy plugin due to lack of packages.
      • 27.03.20: - Initial release.
      "},{"location":"images/docker-requestrr/","title":"requestrr","text":""},{"location":"images/docker-requestrr/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.

      "},{"location":"images/docker-requestrr/#linuxserverrequestrr","title":"linuxserver/requestrr","text":"

      Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.

      "},{"location":"images/docker-requestrr/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-requestrr/#application-setup","title":"Application Setup","text":"

      Access the webui at <your-ip>:4545, for more information check out Requestrr.

      "},{"location":"images/docker-requestrr/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-requestrr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nrequestrr:\nimage: lscr.io/linuxserver/requestrr:latest\ncontainer_name: requestrr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 4545:4545\nrestart: unless-stopped\n
      "},{"location":"images/docker-requestrr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=requestrr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 4545:4545 \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/requestrr:latest\n
      "},{"location":"images/docker-requestrr/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-requestrr/#ports-p","title":"Ports (-p)","text":"Parameter Function 4545 web gui"},{"location":"images/docker-requestrr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-requestrr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-requestrr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-requestrr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-requestrr/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-requestrr/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-requestrr/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-requestrr/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it requestrr /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f requestrr
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' requestrr
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/requestrr:latest
      "},{"location":"images/docker-requestrr/#versions","title":"Versions","text":"
      • 20.12.21: - Deprecate.
      • 27.09.21: - Allow app to write to tmp folder.
      • 21.02.21: - Initial Release.
      "},{"location":"images/docker-resilio-sync/","title":"resilio-sync","text":""},{"location":"images/docker-resilio-sync/#linuxserverresilio-sync","title":"linuxserver/resilio-sync","text":"

      Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.

      "},{"location":"images/docker-resilio-sync/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/resilio-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-resilio-sync/#application-setup","title":"Application Setup","text":"
      • Webui is at <your-ip>:8888, for account creation and configuration.
      • More info on setup at Resilio Sync
      "},{"location":"images/docker-resilio-sync/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-resilio-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nresilio-sync:\nimage: lscr.io/linuxserver/resilio-sync:latest\ncontainer_name: resilio-sync\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/downloads:/downloads\n- /path/to/data:/sync\nports:\n- 8888:8888\n- 55555:55555\nrestart: unless-stopped\n
      "},{"location":"images/docker-resilio-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=resilio-sync \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8888:8888 \\\n-p 55555:55555 \\\n-v /path/to/config:/config \\\n-v /path/to/downloads:/downloads \\\n-v /path/to/data:/sync \\\n--restart unless-stopped \\\nlscr.io/linuxserver/resilio-sync:latest\n
      "},{"location":"images/docker-resilio-sync/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-resilio-sync/#ports-p","title":"Ports (-p)","text":"Parameter Function 8888 WebUI 55555 Sync Port."},{"location":"images/docker-resilio-sync/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-resilio-sync/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where resilio-sync should store its config file. /downloads Folder for downloads/cache. /sync Sync folders root."},{"location":"images/docker-resilio-sync/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-resilio-sync/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-resilio-sync/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-resilio-sync/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-resilio-sync/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-resilio-sync/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it resilio-sync /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f resilio-sync
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' resilio-sync
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/resilio-sync:latest
      "},{"location":"images/docker-resilio-sync/#versions","title":"Versions","text":"
      • 14.12.22: - Rebase to Jammy, migrate to s6v3.
      • 03.10.21: - Use upstream apt repo to install. Rebase to focal.
      • 20.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 11.02.19: - Rebase to bionic, add pipeline logic and multi arch.
      • 05.02.18: - Add downloads volume mount.
      • 28.01.18: - Add /sync to dir whitelist.
      • 26.01.18: - Use variable for arch to bring in line with armhf arch repo.
      • 15.12.17: - Fix continuation lines.
      • 02.06.17: - Rebase to ubuntu xenial, alpine linux no longer works with resilio.
      • 22.05.17: - Add variable for user defined umask.
      • 14.05.17: - Use fixed version instead of latest, while 2.5.0 is broken on non glibc (alpine).
      • 08.02.17: - Rebase to alpine 3.5.
      • 02.11.16: - Initial Release.
      "},{"location":"images/docker-rsnapshot/","title":"rsnapshot","text":""},{"location":"images/docker-rsnapshot/#linuxserverrsnapshot","title":"linuxserver/rsnapshot","text":"

      Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\"

      "},{"location":"images/docker-rsnapshot/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/rsnapshot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-rsnapshot/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-rsnapshot/#important-notes","title":"IMPORTANT NOTES:","text":"

      After starting the container you will need to edit /config/rsnapshot.conf.

      "},{"location":"images/docker-rsnapshot/#snapshot-root-directory","title":"SNAPSHOT ROOT DIRECTORY","text":"

      rsnapshot is configured to backup data to the /.snapshots volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

      "},{"location":"images/docker-rsnapshot/#backup-levels-intervals","title":"BACKUP LEVELS / INTERVALS","text":"

      rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.

      "},{"location":"images/docker-rsnapshot/#backup-points","title":"BACKUP POINTS","text":"

      rsnapshot is configured to backup data from the /data volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.

      "},{"location":"images/docker-rsnapshot/#cron","title":"cron","text":"

      You will then need to edit /config/crontabs/root to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme.

      "},{"location":"images/docker-rsnapshot/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-rsnapshot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nrsnapshot:\nimage: lscr.io/linuxserver/rsnapshot:latest\ncontainer_name: rsnapshot\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=America/New_York\nvolumes:\n- /path/to/appdata:/config\n- /path/to/snapshots:/.snapshots #optional\n- /path/to/data:/data #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-rsnapshot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=rsnapshot \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=America/New_York \\\n-v /path/to/appdata:/config \\\n-v /path/to/snapshots:/.snapshots `#optional` \\\n-v /path/to/data:/data `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/rsnapshot:latest\n
      "},{"location":"images/docker-rsnapshot/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-rsnapshot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York"},{"location":"images/docker-rsnapshot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /.snapshots Storage location for all snapshots. /data Storage location for data to be backed up."},{"location":"images/docker-rsnapshot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-rsnapshot/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-rsnapshot/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-rsnapshot/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-rsnapshot/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it rsnapshot /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f rsnapshot
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rsnapshot
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rsnapshot:latest
      "},{"location":"images/docker-rsnapshot/#versions","title":"Versions","text":"
      • 15.12.22: - Rebase to alpine 3.17.
      • 11.10.22: - Rebase to alpine 3.16, migrate to s6v3.
      • 10.10.21: - Rebase to alpine 3.14.
      • 20.08.20: - Initial Release.
      "},{"location":"images/docker-rutorrent/","title":"rutorrent","text":""},{"location":"images/docker-rutorrent/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated.

      "},{"location":"images/docker-rutorrent/#linuxserverrutorrent","title":"linuxserver/rutorrent","text":"

      Rutorrent is a popular rtorrent client with a webui for ease of use.

      "},{"location":"images/docker-rutorrent/#supported-architectures","title":"Supported Architectures","text":"

      Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-rutorrent/#usage","title":"Usage","text":"

      Here are some example snippets to help you get started creating a container from this image.

      "},{"location":"images/docker-rutorrent/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

      Compatible with docker-compose v2 schemas.

      ---\nversion: \"2.1\"\nservices:\nrutorrent:\nimage: lscr.io/linuxserver/rutorrent\ncontainer_name: rutorrent\nenvironment:\n- PUID=1000\n- PGID=1000\nvolumes:\n- </path/to/rutorrent/config>:/config\n- </path/to/rutorrent/downloads>:/downloads\nports:\n- 80:80\n- 5000:5000\n- 51413:51413\n- 6881:6881/udp\nrestart: unless-stopped\n
      "},{"location":"images/docker-rutorrent/#docker-cli","title":"docker cli","text":"
      docker run -d \\\n  --name=rutorrent \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -p 80:80 \\\n  -p 5000:5000 \\\n  -p 51413:51413 \\\n  -p 6881:6881/udp \\\n  -v </path/to/rutorrent/config>:/config \\\n  -v </path/to/rutorrent/downloads>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/rutorrent\n
      "},{"location":"images/docker-rutorrent/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-rutorrent/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 ruTorrent Web UI 5000 scgi port 51413 Bit-torrent port 6881/udp Bit-torrent port"},{"location":"images/docker-rutorrent/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"images/docker-rutorrent/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config where ruTorrent should store it's config files /downloads path to your downloads folder"},{"location":"images/docker-rutorrent/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-rutorrent/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-rutorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-rutorrent/#application-setup","title":"Application Setup","text":"

      THIS IMAGE IS DEPRECATED. Please migrate to crazy-max's image.

      Webui can be found at <your-ip>:80 , configuration files for rtorrent are in /config/rtorrent, php in config/php and for the webui in /config/rutorrent/settings.

      Settings, changed by the user through the \"Settings\" panel in ruTorrent, are valid until rtorrent restart. After which all settings will be set according to the rtorrent config file (/config/rtorrent/rtorrent.rc),this is a limitation of the actual apps themselves.

      ** Important note for unraid users or those running services such as a webserver on port 80, change port 80 assignment **

      ** It should also be noted that this container when run will create subfolders ,completed, incoming and watched in the /downloads volume.**

      ** The Port Assignments and configuration folder structure has been changed from the previous ubuntu based versions of this container and we recommend a clean install **

      Umask can be set in the /config/rtorrent/rtorrent.rc file by changing value in system.umask.set

      If you are seeing this error Caught internal_error: 'DhtRouter::get_tracker did not actually insert tracker.'. , a possible fix is to disable dht in /config/rtorrent/rtorrent.rc by changing the following values.

      dht.mode.set = disable\nprotocol.pex.set = no\n

      If after updating you see an error about connecting to rtorrent in the webui, remove or comment out these lines in /config/rtorrent/rtorrent.rc ,whatever value is set, yes or no. Just setting them to no will still cause the error..

      trackers.use_udp.set = yes\nprotocol.pex.set = no\n
      To add plugins, create a plugins folder in your /config directory and add your plugin folders. Ensure proper user and group ownership is set once you add the directories. To add themes, create a themes folder in your /config directory and add your theme folders. Ensure proper user and group ownership is set once you add the directories.

      "},{"location":"images/docker-rutorrent/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-rutorrent/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it rutorrent /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f rutorrent
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rutorrent
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rutorrent
      "},{"location":"images/docker-rutorrent/#versions","title":"Versions","text":"
      • 25.03.22: - Deprecated. Please migrate to crazy-max's image.
      • 02.06.20: - Rebasing to alpine 3.12.
      • 29.02.20: - Update readme for pex/dht.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 20.05.19: - Shift to building from official releases instead of commits.
      • 13.05.19: - Add libffi and openssl.
      • 07.05.19: - Add cloudscraper pip package.
      • 11.04.19: - Fix warnings in webui by adding python3, procps and pip packages.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 03.11.18: - Add pipeline and multi arch logic to repo.
      • 27.08.18: - Add bind tools package.
      • 22.08.18: - Rebase to alpine 3.8.
      • 08.12.17: - Rebase to alpine 3.7, add sox package.
      • 28.10.17: - Mediainfo moved from testing to community repo.
      • 09.10.17: - Use repo version of mediainfo to shorten build time.
      • 28.05.17: - Fix permissions on secondary temp folder of nginx.
      • 26.05.17: - Rebase to alpine 3.6.
      • 03.05.17: - Fix log permissions.
      • 18.03.17: - Note in readme about disabling dht in some circumstances.
      • 24.02.17: - Patch a source file to quash rss https bug.
      • 29.01.17: - Rebase to alpine 3.5.
      • 20.11.16: - Add php7-mbstring package, bump mediainfo to 0.7.90.
      • 14.10.16: - Add version layer information.
      • 04.10.16: - Remove redundant sessions folder.
      • 30.09.16: - Fix umask.
      • 21.09.16: - Bump mediainfo, reorg dockerfile, add full wget package.
      • 09.09.16: - Add layer badges to README.
      • 28.08.16: - Add badges to README, bump mediainfo version to 0.7.87.
      • 07.08.16: - Perms fix on nginx tmp folder, also exposed php.ini for editing by use in /config/php.
      • 26.07.16: - Rebase to alpine.
      • 08.03.16: - Initial Release.
      "},{"location":"images/docker-sabnzbd/","title":"sabnzbd","text":""},{"location":"images/docker-sabnzbd/#linuxserversabnzbd","title":"linuxserver/sabnzbd","text":"

      Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.

      "},{"location":"images/docker-sabnzbd/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/sabnzbd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-sabnzbd/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 Stable SABnzbd releases unstable \u2705 Pre-releases from the develop branch nightly \u2705 Latest commits from the develop branch"},{"location":"images/docker-sabnzbd/#application-setup","title":"Application Setup","text":"

      Initial setup is done from the http port.

      See the SABnzbd wiki for more information.

      "},{"location":"images/docker-sabnzbd/#nzb-notify","title":"nzb-notify","text":"

      nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.

      "},{"location":"images/docker-sabnzbd/#download-folders","title":"Download folders","text":"

      In Sabnzbd gui settings, under Folders, make sure to set the Completed Download Folder as /downloads and the Temporary Download Folder as /incomplete-downloads

      We have set /incomplete-downloads and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

      Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

      The folks over at servarr.com wrote a good write-up on how to get started with this.

      "},{"location":"images/docker-sabnzbd/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-sabnzbd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsabnzbd:\nimage: lscr.io/linuxserver/sabnzbd:latest\ncontainer_name: sabnzbd\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/downloads:/downloads #optional\n- /path/to/incomplete/downloads:/incomplete-downloads #optional\nports:\n- 8080:8080\nrestart: unless-stopped\n
      "},{"location":"images/docker-sabnzbd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=sabnzbd \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8080:8080 \\\n-v /path/to/data:/config \\\n-v /path/to/downloads:/downloads `#optional` \\\n-v /path/to/incomplete/downloads:/incomplete-downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/sabnzbd:latest\n
      "},{"location":"images/docker-sabnzbd/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sabnzbd/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 HTTP port for the WebUI."},{"location":"images/docker-sabnzbd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-sabnzbd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Local path for sabnzbd config files. /downloads Local path for finished downloads. /incomplete-downloads Local path for incomplete-downloads."},{"location":"images/docker-sabnzbd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sabnzbd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-sabnzbd/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-sabnzbd/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sabnzbd/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-sabnzbd/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sabnzbd /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sabnzbd
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sabnzbd
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sabnzbd:latest
      "},{"location":"images/docker-sabnzbd/#versions","title":"Versions","text":"
      • 03.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
      • 12.08.22: - Bump unrar to 6.1.7.
      • 31.07.22: - Add nightly tag.
      • 10.03.22: - Add nzb-notify.
      • 22.02.22: - Rebase master branch to Alpine, build unrar from source, deprecate Alpine branch.
      • 25.01.22: - Rebase Unstable branch to Alpine.
      • 13.01.22: - Add alpine branch
      • 08.08.21: - Bump to focal, dont enforce binding to ipv4 port 8080
      • 24.07.21: - Add python3-setuptools.
      • 14.05.21: - Use linuxserver.io wheel index for pip packages.
      • 12.02.21: - Clean up rust/cargo and pip cache.
      • 17.08.20: - Run from source with python3 instead of ppa, remove python2 completely, symlink python to python3.
      • 02.01.20: - Add python3 on top of python2 to image during transition.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 25.02.19: - Rebase to Bionic, add python deps for scripts.
      • 26.01.19: - Add pipeline logic and multi arch.
      • 13.12.17: - Fix continuation lines.
      • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
      • 10.04.17: - Bump to 2.0 Release.
      • 25.02.17: - Switch to nobetas repo for master/latest branch and add unstable branch.
      • 08.02.17: - Add pythonioenconding=utf8 as env.
      • 15.09.16: - Compile par2 multicore as per latest info sabnzbd git readme.
      • 11.09.16: - Bump to release of 1.10.
      • 09.09.16: - Rebase back to xenial, issues with alpine version of python and 1.10 branch of sab.
      • 28.08.16: - Rebase to alpine, using git version of sab.
      • 17.03.16: - Bump to install 1.0 final at startup.
      • 14.03.16: - Refresh image to pick up latest RC.
      • 23.01.15: - Refresh image.
      • 14.12.15: - Refresh image to pick up latest beta.
      • 21.08.15: - Initial Release.
      "},{"location":"images/docker-scrutiny/","title":"scrutiny","text":""},{"location":"images/docker-scrutiny/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated. We recommend the official images: https://github.com/AnalogJ/scrutiny#docker

      "},{"location":"images/docker-scrutiny/#linuxserverscrutiny","title":"linuxserver/scrutiny","text":"

      Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

      "},{"location":"images/docker-scrutiny/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-scrutiny/#application-setup","title":"Application Setup","text":"

      This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true will deploy the container as both a collector and the web UI - this is the simplest and most straightforward deployment approach. To make use of the hub and spoke model, run this container in \"collector\" mode by specifying SCRUTINY_API_ENDPOINT. Set this to the host that is running the API. For this to work, you will need to expose the API port directly from the container (by default this is 8080).

      You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off.

      A fully commented example configuration yaml file can be found in the original project repository here. Place this file in the location mounted to /config.

      A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26.

      "},{"location":"images/docker-scrutiny/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-scrutiny/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nscrutiny:\nimage: lscr.io/linuxserver/scrutiny:latest\ncontainer_name: scrutiny\ncap_add:\n- SYS_RAWIO\n- SYS_ADMIN #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SCRUTINY_API_ENDPOINT=http://localhost:8080\n- SCRUTINY_WEB=true\n- SCRUTINY_COLLECTOR=true\nvolumes:\n- /path/to/config:/config\n- /run/udev:/run/udev:ro\nports:\n- 8080:8080\ndevices:\n- /dev/sda:/dev/sda\n- /dev/sdb:/dev/sdb\n- /dev/nvme1n1:/dev/nvme1n1\nrestart: unless-stopped\n
      "},{"location":"images/docker-scrutiny/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=scrutiny \\\n--cap-add=SYS_RAWIO \\\n--cap-add=SYS_ADMIN `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SCRUTINY_API_ENDPOINT=http://localhost:8080 \\\n-e SCRUTINY_WEB=true \\\n-e SCRUTINY_COLLECTOR=true \\\n-p 8080:8080 \\\n-v /path/to/config:/config \\\n-v /run/udev:/run/udev:ro \\\n--device /dev/sda:/dev/sda \\\n--device /dev/sdb:/dev/sdb \\\n--device /dev/nvme1n1:/dev/nvme1n1 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/scrutiny:latest\n
      "},{"location":"images/docker-scrutiny/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-scrutiny/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for scrutiny's web interface and API."},{"location":"images/docker-scrutiny/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. SCRUTINY_API_ENDPOINT=http://localhost:8080 # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector SCRUTINY_WEB=true # optional - Run the web service. SCRUTINY_COLLECTOR=true # optional - Run the metrics collector."},{"location":"images/docker-scrutiny/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where config is stored. /run/udev:ro Provides necessary metadata to Scrutiny."},{"location":"images/docker-scrutiny/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/sda This is how Scrutiny accesses drives. Optionally supply /dev:/dev instead for all devices. /dev/sdb A second drive. /dev/nvme1n1 An NVMe drive. NVMe requires --cap-add=SYS_ADMIN."},{"location":"images/docker-scrutiny/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-scrutiny/#portainer-notice","title":"Portainer notice","text":"

      {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

      "},{"location":"images/docker-scrutiny/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-scrutiny/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-scrutiny/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-scrutiny/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-scrutiny/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it scrutiny /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f scrutiny
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' scrutiny
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/scrutiny:latest
      "},{"location":"images/docker-scrutiny/#versions","title":"Versions","text":"
      • 13.06.22: - Deprecate container.
      • 19.01.22: - Rebase to Alpine 3.15.
      • 22.11.20: - Added fix for nsswitch.conf to resolve local hosts
      • 17.09.20: - Initial Release.
      "},{"location":"images/docker-shout-irc/","title":"shout-irc","text":""},{"location":"images/docker-shout-irc/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge

      "},{"location":"images/docker-shout-irc/#linuxservershout-irc","title":"linuxserver/shout-irc","text":"

      Shout-irc is a web IRC client that you host on your own server.

      "},{"location":"images/docker-shout-irc/#supported-architectures","title":"Supported Architectures","text":"

      Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-shout-irc/#usage","title":"Usage","text":"

      Here are some example snippets to help you get started creating a container from this image.

      "},{"location":"images/docker-shout-irc/#docker","title":"docker","text":"
      docker create \\\n  --name=shout-irc \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 9000:9000 \\\n  -v </path/to/appdata/config>:/config \\\n  --restart unless-stopped \\\n  linuxserver/shout-irc\n
      "},{"location":"images/docker-shout-irc/#docker-compose","title":"docker-compose","text":"

      Compatible with docker-compose v2 schemas.

      ---\nversion: \"2\"\nservices:\nshout-irc:\nimage: linuxserver/shout-irc\ncontainer_name: shout-irc\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 9000:9000\nrestart: unless-stopped\n
      "},{"location":"images/docker-shout-irc/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-shout-irc/#ports-p","title":"Ports (-p)","text":"Parameter Function 9000 Application WebUI"},{"location":"images/docker-shout-irc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-shout-irc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"images/docker-shout-irc/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-shout-irc/#application-setup","title":"Application Setup","text":"
      • To log in to the application, browse to https://:9000. To setup user account(s) edit /config/config.json Change the value public: true, to public: false, restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add <user> Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface.
      "},{"location":"images/docker-shout-irc/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it shout-irc /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f shout-irc
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shout-irc
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/shout-irc
      "},{"location":"images/docker-shout-irc/#versions","title":"Versions","text":"
      • 11.06.19: - DEPRECATE IMAGE, USE THELOUNGE.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 28.01.19: - Add pipeline logic and multi arch.
      • 25.08.18: - Rebase to alpine 3.8.
      • 13.12.17: - Rebase to alpine 3.7.
      • 27.05.17: - Rebase to alpine 3.6.
      • 09.02.17: - Rebase to alpine 3.5.
      • 14.10.16: - Add version layer information.
      • 31.08.16: - Rebase to alpine linux, move to lsiocommunity
      "},{"location":"images/docker-sickchill/","title":"sickchill","text":""},{"location":"images/docker-sickchill/#linuxserversickchill","title":"linuxserver/sickchill","text":"

      Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.

      "},{"location":"images/docker-sickchill/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/sickchill:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-sickchill/#application-setup","title":"Application Setup","text":"

      Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

      "},{"location":"images/docker-sickchill/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-sickchill/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsickchill:\nimage: lscr.io/linuxserver/sickchill:latest\ncontainer_name: sickchill\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/data:/downloads\n- /path/to/data:/tv\nports:\n- 8081:8081\nrestart: unless-stopped\n
      "},{"location":"images/docker-sickchill/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=sickchill \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8081:8081 \\\n-v /path/to/data:/config \\\n-v /path/to/data:/downloads \\\n-v /path/to/data:/tv \\\n--restart unless-stopped \\\nlscr.io/linuxserver/sickchill:latest\n
      "},{"location":"images/docker-sickchill/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sickchill/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickchill/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London specify your TimeZone e.g. Europe/London"},{"location":"images/docker-sickchill/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store config on the docker host /downloads this will store any downloaded data on the docker host /tv this will allow sickchill to view what you already have"},{"location":"images/docker-sickchill/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickchill/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-sickchill/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-sickchill/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sickchill/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-sickchill/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sickchill /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sickchill
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickchill
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickchill:latest
      "},{"location":"images/docker-sickchill/#versions","title":"Versions","text":"
      • 17.02.22: - Rebase to alpine 3.17.
      • 17.02.22: - Rebase to alpine 3.15.
      • 20.11.21: - Modify binary usage from SickChill.py to SickChill.
      • 14.05.21: - Add linuxserver wheel index.
      • 12.02.21: - Rebasing to alpine 3.13. Add python certifi.
      • 17.09.20: - Update dependencies.
      • 06.09.20: - Switch to python3, install pip package.
      • 22.04.20: - Switch to git clone and using git tags for versioning.
      • 09.01.20: - Remove creating data volumes, fix build args for armhf and aarch64.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 17.04.19: - Adding Nodejs dependancy.
      • 31.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 10.10.18: - Initial Release.
      "},{"location":"images/docker-sickgear/","title":"sickgear","text":""},{"location":"images/docker-sickgear/#linuxserversickgear","title":"linuxserver/sickgear","text":"

      SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..

      For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear

      "},{"location":"images/docker-sickgear/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/sickgear:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-sickgear/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-sickgear/#setting-up-the-application","title":"Setting up the application","text":"

      Access the webui at <your-ip>:8081, for more information check out SickGear.

      "},{"location":"images/docker-sickgear/#migration","title":"Migration","text":"

      Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup

      • The post processing directory which is volume mounted as downloads within this container may be incoming in other versions.

      • The permissions environmental variables which are defined as PGID and PUID within this container may have been APP_UID and APP_UID in other versions.

      • The configuration file directory which is volume mounted as config within this container may be set as the environmetal variable APP_DATA in other versions.

      • The cache directory which is set in config.ini may be configured as a fixed path cache_dir = /data/cache. Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache which will allow SickGear to look for the folder relative to the volume mounted /config directory.

      It is recommended that a clean install be completed, rather than a migration, however if migration is necessary:

      • start a new instance of this image

      • compare and align SickGear version numbers bewteen old and new. Ideally they should match but at a minumum the old vesion should be a lower version number to allow SickGear itself to try and migrate

      • stop both containers

      • notice the configuration difference and migrate copies of the old settings into the new app

      • start the new container and test

      "},{"location":"images/docker-sickgear/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-sickgear/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsickgear:\nimage: lscr.io/linuxserver/sickgear:latest\ncontainer_name: sickgear\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/data:/tv\n- /path/to/data:/downloads\nports:\n- 8081:8081\nrestart: unless-stopped\n
      "},{"location":"images/docker-sickgear/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=sickgear \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8081:8081 \\\n-v /path/to/data:/config \\\n-v /path/to/data:/tv \\\n-v /path/to/data:/downloads \\\n--restart unless-stopped \\\nlscr.io/linuxserver/sickgear:latest\n
      "},{"location":"images/docker-sickgear/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sickgear/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickgear/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-sickgear/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config this will store any uploaded data on the docker host /tv where you store your tv shows /downloads your downloads folder for post processing (must not be download in progress)"},{"location":"images/docker-sickgear/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickgear/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-sickgear/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-sickgear/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sickgear/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-sickgear/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sickgear /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sickgear
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickgear
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickgear:latest
      "},{"location":"images/docker-sickgear/#versions","title":"Versions","text":"
      • 18.11.22: - Update service file from legacy SickBeard.py to sickgear.py.
      • 10.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 19.09.22: - Rebase to alpine 3.15. Build unrar from source.
      • 31.01.21: - Add unrar.
      • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 03.06.20: - Rebasing to alpine 3.12, switch to python3.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 07.11.18: - Pipeline prep
      • 07.07.18: - Initial draft release
      "},{"location":"images/docker-sickrage/","title":"sickrage","text":""},{"location":"images/docker-sickrage/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead

      "},{"location":"images/docker-sickrage/#linuxserversickrage","title":"linuxserver/sickrage","text":""},{"location":"images/docker-sickrage/#supported-architectures","title":"Supported Architectures","text":"

      Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-sickrage/#usage","title":"Usage","text":"

      Here are some example snippets to help you get started creating a container from this image.

      "},{"location":"images/docker-sickrage/#docker","title":"docker","text":"
      docker create \\\n  --name=sickrage \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 8081:8081 \\\n  -v </path/to/appdata/config>:/config \\\n  -v </path/to/downloads>:/downloads \\\n  -v </path/to/tv/shows>:/tv \\\n  --restart unless-stopped \\\n  linuxserver/sickrage\n
      "},{"location":"images/docker-sickrage/#docker-compose","title":"docker-compose","text":"

      Compatible with docker-compose v2 schemas.

      ---\nversion: \"2\"\nservices:\nsickrage:\nimage: linuxserver/sickrage\ncontainer_name: sickrage\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\n- </path/to/downloads>:/downloads\n- </path/to/tv/shows>:/tv\nports:\n- 8081:8081\nrestart: unless-stopped\n
      "},{"location":"images/docker-sickrage/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sickrage/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 Application WebUI"},{"location":"images/docker-sickrage/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-sickrage/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /downloads ISOs. /tv TV library directory."},{"location":"images/docker-sickrage/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sickrage/#application-setup","title":"Application Setup","text":"

      Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

      "},{"location":"images/docker-sickrage/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sickrage /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sickrage
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickrage
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/sickrage
      "},{"location":"images/docker-sickrage/#versions","title":"Versions","text":"
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 16.01.19: - Add pipeline logic and multi arch.
      • 09.08.18: - Change repository to Sick-Rage
      • 17.08.18: - Rebase to alpine 3.8.
      • 20.03.18: - In lieu of a definite fix from SR, add nodejs package for use with torrentz and other sources.
      • 12.12.17: - Rebase to alpine 3.7.
      • 06.08.17: - Internal git pull instead of at runtime.
      • 25.05.17: - Rebase to alpine 3.6.
      • 07.02.17: - Rebase to alpine 3.5.
      • 14.10.16: - Add version layer information.
      • 30.09.16: - Fix umask.
      • 09.09.16: - Add layer badges to README.
      • 28.08.16: - Add badges to README.
      • 08.08.16: - Rebase to alpine linux.
      • 30.12.15: - Build later version of unrar from source, removed uneeded mako package.
      • 20.11.15: - Updated to new repo, by SickRage Team.
      • 15.10.15: - Initial Release.
      "},{"location":"images/docker-smokeping/","title":"smokeping","text":""},{"location":"images/docker-smokeping/#linuxserversmokeping","title":"linuxserver/smokeping","text":"

      Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.

      "},{"location":"images/docker-smokeping/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/smokeping:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-smokeping/#application-setup","title":"Application Setup","text":"
      • Once running the URL will be http://<host-ip>/smokeping/smokeping.cgi. For example a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi.
      • Basics are, edit the Targets file to ping the hosts you're interested in to match the format found there.
      • Wait 10 minutes.
      "},{"location":"images/docker-smokeping/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-smokeping/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsmokeping:\nimage: lscr.io/linuxserver/smokeping:latest\ncontainer_name: smokeping\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/smokeping/config:/config\n- /path/to/smokeping/data:/data\nports:\n- 80:80\nrestart: unless-stopped\n
      "},{"location":"images/docker-smokeping/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=smokeping \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-v /path/to/smokeping/config:/config \\\n-v /path/to/smokeping/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/smokeping:latest\n
      "},{"location":"images/docker-smokeping/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-smokeping/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Allows HTTP access to the internal webserver."},{"location":"images/docker-smokeping/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-smokeping/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configure the Targets file here /data Storage location for db and application data (graphs etc)"},{"location":"images/docker-smokeping/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-smokeping/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-smokeping/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-smokeping/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-smokeping/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-smokeping/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it smokeping /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f smokeping
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' smokeping
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/smokeping:latest
      "},{"location":"images/docker-smokeping/#versions","title":"Versions","text":"
      • 12.12.22: - Rebase to Alpine 3.17, migrate to s6v3, switch to nginx and fcgiwrap.
      • 29.03.21: - Dockerfile: Install curl before we call it
      • 23.01.21: - Rebasing to alpine 3.13.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 14.11.18: - Allow access without /smokeping in URL.
      • 28.04.18: - Rebase to alpine 3.8.
      • 09.04.18: - Add bc package.
      • 08.04.18: - Add tccping script and tcptraceroute package (thanks rcarmo).
      • 13.12.17: - Expose httpd_conf to /config.
      • 13.12.17: - Rebase to alpine 3.7.
      • 24.07.17: - Add :unraid tag for hosts without ipv6.
      • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
      • 28.05.17: - Rebase to alpine 3.6.
      • 07.05.17: - Expose smokeping.conf in /config/site-confs to allow user customisations
      • 12.04.17: - Fix cropper.js path, thanks nibbledeez.
      • 09.02.17: - Rebase to alpine 3.5.
      • 17.10.16: - Add ttf-dejavu package as per LT forum.
      • 10.09.16: - Add layer badges to README.
      • 05.09.16: - Add curl package.
      • 28.08.16: - Add badges to README.
      • 25.07.16: - Rebase to alpine linux.
      • 23.07.16: - Fix apt script confusion.
      • 29.06.15: - This is the first release, it is mostly stable, but may contain minor defects. (thus a beta tag)
      "},{"location":"images/docker-snapdrop/","title":"snapdrop","text":""},{"location":"images/docker-snapdrop/#linuxserversnapdrop","title":"linuxserver/snapdrop","text":"

      Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.

      "},{"location":"images/docker-snapdrop/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/snapdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-snapdrop/#application-setup","title":"Application Setup","text":"

      Webui is accessible at http://SERVERIP:PORT

      If you intend to expose Snapdrop to the internet, edit /config/nginx/site-confs/default.conf and uncomment the real_ip settings

      "},{"location":"images/docker-snapdrop/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-snapdrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsnapdrop:\nimage: lscr.io/linuxserver/snapdrop:latest\ncontainer_name: snapdrop\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to config>:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
      "},{"location":"images/docker-snapdrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=snapdrop \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 80:80 \\\n-p 443:443 \\\n-v <path to config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/snapdrop:latest\n
      "},{"location":"images/docker-snapdrop/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-snapdrop/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-snapdrop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-snapdrop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent configs and logs."},{"location":"images/docker-snapdrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snapdrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-snapdrop/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-snapdrop/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-snapdrop/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-snapdrop/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it snapdrop /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f snapdrop
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snapdrop
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snapdrop:latest
      "},{"location":"images/docker-snapdrop/#versions","title":"Versions","text":"
      • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
      • 09.08.21: - Rebase to Alpine 3.14. Add real_ip block to nginx default site config.
      • 15.09.20: - Initial Release.
      "},{"location":"images/docker-snipe-it/","title":"snipe-it","text":""},{"location":"images/docker-snipe-it/#linuxserversnipe-it","title":"linuxserver/snipe-it","text":"

      Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.

      "},{"location":"images/docker-snipe-it/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/snipe-it:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-snipe-it/#application-setup","title":"Application Setup","text":"

      Access the webui at <your-ip>:8080, for more information check out Snipe-it. This container requires a MySQL or MariaDB server to connect to, we reccomend ours

      This container also generates an SSL certificate and stores it in

      /config/keys/cert.crt\n/config/keys/cert.key\n
      To use your own certificate swap these files with yours. To use SSL forward your port to 443 inside the container IE:

      -p 443:443\n

      The application accepts a series of environment variables to further customize itself on boot:

      Parameter Function -e APP_ENV= Default is production but can use testing or develop -e APP_DEBUG= Set to true to see debugging output in the web UI -e APP_LOCALE= Default is en set to the language preferred full list here -e MAIL_PORT_587_TCP_ADDR= SMTP mailserver ip or hostname -e MAIL_PORT_587_TCP_PORT= SMTP mailserver port -e MAIL_ENV_FROM_ADDR= The email address mail should be replied to and listed when sent -e MAIL_ENV_FROM_NAME= The name listed on email sent from the default account on the system -e MAIL_ENV_ENCRYPTION= Mail encryption to use IE tls -e MAIL_ENV_USERNAME= SMTP server login username -e MAIL_ENV_PASSWORD= SMTP server login password"},{"location":"images/docker-snipe-it/#php-customization","title":"PHP customization","text":"

      This image uses our NGINX base image all configuration files for PHP and NGINX are located in /config/php. To overide any defaults please modify /config/php/php-local.ini IE for upload size:

      upload_max_filesize = 16\npost_max_size = 16M\n
      "},{"location":"images/docker-snipe-it/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-snipe-it/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsnipe-it:\nimage: lscr.io/linuxserver/snipe-it:latest\ncontainer_name: snipe-it\nenvironment:\n- PUID=1000\n- PGID=1000\n- APP_URL=http://localhost:8080\n- MYSQL_PORT_3306_TCP_ADDR=\n- MYSQL_PORT_3306_TCP_PORT=\n- MYSQL_DATABASE=\n- MYSQL_USER=\n- MYSQL_PASSWORD=\n- TZ=US/Pacific\nvolumes:\n- /path/to/data:/config\nports:\n- 8080:80\nrestart: unless-stopped\n
      "},{"location":"images/docker-snipe-it/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=snipe-it \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e APP_URL=http://localhost:8080 \\\n-e MYSQL_PORT_3306_TCP_ADDR= \\\n-e MYSQL_PORT_3306_TCP_PORT= \\\n-e MYSQL_DATABASE= \\\n-e MYSQL_USER= \\\n-e MYSQL_PASSWORD= \\\n-e TZ=US/Pacific \\\n-p 8080:80 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/snipe-it:latest\n
      "},{"location":"images/docker-snipe-it/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-snipe-it/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Snipe-IT Web UI"},{"location":"images/docker-snipe-it/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation APP_URL=http://localhost:8080 Hostname or IP and port if applicable, be sure to define https/http MYSQL_PORT_3306_TCP_ADDR= Mysql hostname or IP to use MYSQL_PORT_3306_TCP_PORT= Mysql port to use MYSQL_DATABASE= Mysql database to use MYSQL_USER= Mysql user to use MYSQL_PASSWORD= Mysql password to use TZ=US/Pacific Specify a timezone to use EG Europe/London, this is required to run snipe-it"},{"location":"images/docker-snipe-it/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains your config files and data storage for Snipe-IT"},{"location":"images/docker-snipe-it/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snipe-it/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-snipe-it/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-snipe-it/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-snipe-it/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-snipe-it/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it snipe-it /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f snipe-it
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snipe-it
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snipe-it:latest
      "},{"location":"images/docker-snipe-it/#versions","title":"Versions","text":"
      • 28.12.22: - Rebase to Alpine 3.17, migrate to s6v3.
      • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
      • 14.05.22: - Add php7-sodium for v6.
      • 12.04.22: - Don't build development elements.
      • 02.03.22: - Rework init logic, do not show default compose.
      • 29.06.21: - Rebasing to alpine 3.14.
      • 30.04.21: - Rebasing to alpine 3.13, add artisan migrate on spinup.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 10.04.19: - Add php deps for V4.7.0, ensure framework directories are available at build time.
      • 10.04.19: - Fix permissions for new bootstrap cache directory.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 31.10.18: - Rebasing to alpine 3.8
      • 05.08.18: - Migration to live build server.
      • 13.06.18: - Initial Release.
      "},{"location":"images/docker-sonarr/","title":"sonarr","text":""},{"location":"images/docker-sonarr/#linuxserversonarr","title":"linuxserver/sonarr","text":"

      Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.

      "},{"location":"images/docker-sonarr/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/sonarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-sonarr/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 Stable releases from Sonarr (currently v3) develop \u2705 Development releases from Sonarr (currently v4)"},{"location":"images/docker-sonarr/#application-setup","title":"Application Setup","text":"

      Access the webui at <your-ip>:8989, for more information check out Sonarr.

      "},{"location":"images/docker-sonarr/#media-folders","title":"Media folders","text":"

      We have set /tv and /downloads as optional paths, this is because it is the easiest way to get started. While easy to use, it has some drawbacks. Mainly losing the ability to hardlink (TL;DR a way for a file to exist in multiple places on the same file system while only consuming one file worth of space), or atomic move (TL;DR instant file moves, rather than copy+delete) files while processing content.

      Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

      The folks over at servarr.com wrote a good write-up on how to get started with this.

      "},{"location":"images/docker-sonarr/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-sonarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsonarr:\nimage: lscr.io/linuxserver/sonarr:latest\ncontainer_name: sonarr\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/data:/config\n- /path/to/tvseries:/tv #optional\n- /path/to/downloadclient-downloads:/downloads #optional\nports:\n- 8989:8989\nrestart: unless-stopped\n
      "},{"location":"images/docker-sonarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=sonarr \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8989:8989 \\\n-v /path/to/data:/config \\\n-v /path/to/tvseries:/tv `#optional` \\\n-v /path/to/downloadclient-downloads:/downloads `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/sonarr:latest\n
      "},{"location":"images/docker-sonarr/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sonarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 8989 The port for the Sonarr webinterface"},{"location":"images/docker-sonarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London, this is required for Sonarr"},{"location":"images/docker-sonarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and sonarr configs /tv Location of TV library on disk (See note in Application setup) /downloads Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-sonarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sonarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-sonarr/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-sonarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sonarr/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-sonarr/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sonarr /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sonarr
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sonarr
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sonarr:latest
      "},{"location":"images/docker-sonarr/#versions","title":"Versions","text":"
      • 24.11.22: - Bump develop branch to v4, rebase to Alpine 3.16.
      • 03.08.22: - Deprecate armhf.
      • 02.08.22: - Add armhf deprecation warning.
      • 28.04.22: - Rebase master branch to mono 6.12 base (focal).
      • 20.02.22: - Rebase develop branch to Alpine, deprecate develop-alpine branch.
      • 28.12.21: - Add develop-alpine branch.
      • 11.05.21: - Make the paths clearer to the user.
      • 10.03.21: - Upgrade to Sonarr v3. Existing users are highly recommended to make a backup prior to update.
      • 18.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
      • 05.04.20: - Move app to /app.
      • 01.08.19: - Rebase to Linuxserver LTS mono version.
      • 13.06.19: - Add env variable for setting umask.
      • 10.05.19: - Rebase to Bionic.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 01.02.19: - Multi arch images and pipeline build logic
      • 15.12.17: - Fix continuation lines.
      • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
      • 17.04.17: - Switch to using inhouse mono baseimage, adds python also.
      • 14.04.17: - Change to mount /etc/localtime in README, thanks cbgj.
      • 13.04.17: - Switch to official mono repository.
      • 30.09.16: - Fix umask
      • 23.09.16: - Add cd to /opt fixes redirects with althub (issue #25), make XDG config environment variable
      • 15.09.16: - Add libcurl3 package.
      • 09.09.16: - Add layer badges to README.
      • 27.08.16: - Add badges to README.
      • 20.07.16: - Rebase to xenial.
      • 31.08.15: - Cleanup, changed sources to fetch binarys from. also a new baseimage.
      "},{"location":"images/docker-sqlitebrowser/","title":"sqlitebrowser","text":""},{"location":"images/docker-sqlitebrowser/#linuxserversqlitebrowser","title":"linuxserver/sqlitebrowser","text":"

      DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

      "},{"location":"images/docker-sqlitebrowser/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/sqlitebrowser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-sqlitebrowser/#application-setup","title":"Application Setup","text":"

      The application can be accessed at:

      • http://yourhost:3000/
      "},{"location":"images/docker-sqlitebrowser/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-sqlitebrowser/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsqlitebrowser:\nimage: lscr.io/linuxserver/sqlitebrowser:latest\ncontainer_name: sqlitebrowser\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-sqlitebrowser/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=sqlitebrowser \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/sqlitebrowser:latest\n
      "},{"location":"images/docker-sqlitebrowser/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-sqlitebrowser/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Sqlitebrowser desktop gui."},{"location":"images/docker-sqlitebrowser/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-sqlitebrowser/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-sqlitebrowser/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-sqlitebrowser/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-sqlitebrowser/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-sqlitebrowser/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-sqlitebrowser/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-sqlitebrowser/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it sqlitebrowser /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f sqlitebrowser
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sqlitebrowser
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sqlitebrowser:latest
      "},{"location":"images/docker-sqlitebrowser/#versions","title":"Versions","text":"
      • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 16.02.22: - Rebase to Alpine.
      • 20.01.21: - Remove Wireshark reference.
      • 29.07.20: - Initial release.
      "},{"location":"images/docker-swag/","title":"swag","text":""},{"location":"images/docker-swag/#linuxserverswag","title":"linuxserver/swag","text":"

      SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.

      "},{"location":"images/docker-swag/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/swag:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-swag/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-swag/#validation-and-initial-setup","title":"Validation and initial setup","text":"
      • Before running this container, make sure that the url and subdomains are properly forwarded to this container's host, and that port 443 (and/or 80) is not being used by another service on the host (NAS gui, another webserver, etc.).
      • If you need a dynamic dns provider, you can use the free provider duckdns.org where the URL will be yoursubdomain.duckdns.org and the SUBDOMAINS can be www,ftp,cloud with http validation, or wildcard with dns validation. You can use our duckdns image to update your IP on duckdns.org.
      • For http validation, port 80 on the internet side of the router should be forwarded to this container's port 80
      • For dns validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
      • Cloudflare provides free accounts for managing dns and is very easy to use with this image. Make sure that it is set up for \"dns only\" instead of \"dns + proxy\"
      • Google dns plugin is meant to be used with \"Google Cloud DNS\", a paid enterprise product, and not for \"Google Domains DNS\"
      • DuckDNS only supoprts two types of DNS validated certificates (not both at the same time):
        1. Certs that only cover your main subdomain (ie. yoursubdomain.duckdns.org, leave the SUBDOMAINS variable empty)
        2. Certs that cover sub-subdomains of your main subdomain (ie. *.yoursubdomain.duckdns.org, set the SUBDOMAINS variable to wildcard)
      • --cap-add=NET_ADMIN is required for fail2ban to modify iptables
      • After setup, navigate to https://yourdomain.url to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf).
      • Certs are checked nightly and if expiration is within 30 days, renewal is attempted. If your cert is about to expire in less than 30 days, check the logs under /config/log/letsencrypt to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.
      "},{"location":"images/docker-swag/#security-and-password-protection","title":"Security and password protection","text":"
      • The container detects changes to url and subdomains, revokes existing certs and generates new ones during start.
      • Per RFC7919, the container is shipping ffdhe4096 as the dhparams.pem.
      • If you'd like to password protect your sites, you can use htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
      • You can add multiple user:pass to .htpasswd. For the first user, use the above command, for others, use the above command without the -c flag, as it will force deletion of the existing .htpasswd and creation of a new one
      • You can also use ldap auth for security and access control. A sample, user configurable ldap.conf is provided, and it requires the separate image linuxserver/ldap-auth to communicate with an ldap server.
      "},{"location":"images/docker-swag/#site-config-and-reverse-proxy","title":"Site config and reverse proxy","text":"
      • The default site config resides at /config/nginx/site-confs/default.conf. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default file, a new default will be created on container start.
      • Preset reverse proxy config files are added for popular apps. See the README.md file under /config/nginx/proxy_confs for instructions on how to enable them. The preset confs reside in and get imported from this repo.
      • If you wish to hide your site from search engine crawlers, you may find it useful to add this configuration line to your site config, within the server block, above the line where ssl.conf is included add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\"; This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines
      • If you wish to redirect http to https, you must expose port 80
      "},{"location":"images/docker-swag/#using-certs-in-other-containers","title":"Using certs in other containers","text":"
      • This container includes auto-generated pfx and private-fullchain-bundle pem certs that are needed by other apps like Emby and Znc.
      • To use these certs in other containers, do either of the following:
      • (Easier) Mount the container's config folder in other containers (ie. -v /path-to-swag-config:/swag-ssl) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/
      • (More secure) Mount the SWAG folder etc that resides under /config in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl) and in the other containers, use the cert location /swag-ssl/letsencrypt/live/<your.domain.url>/ (This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs)
      • These certs include:
      • cert.pem, chain.pem, fullchain.pem and privkey.pem, which are generated by Certbot and used by nginx and various other apps
      • privkey.pfx, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)
      • priv-fullchain-bundle.pem, a pem cert that bundles the private key and the fullchain, used by apps like ZNC
      "},{"location":"images/docker-swag/#using-fail2ban","title":"Using fail2ban","text":"
      • This container includes fail2ban set up with 5 jails by default:
      • nginx-http-auth
      • nginx-badbots
      • nginx-botsearch
      • nginx-deny
      • nginx-unauthorized
      • To enable or disable other jails, modify the file /config/fail2ban/jail.local
      • To modify filters and actions, instead of editing the .conf files, create .local files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local files will append whatever's in the .conf files (ie. nginx-http-auth.conf --> nginx-http-auth.local)
      • You can check which jails are active via docker exec -it swag fail2ban-client status
      • You can check the status of a specific jail via docker exec -it swag fail2ban-client status <jail name>
      • You can unban an IP via docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
      • A list of commands can be found here: https://www.fail2ban.org/wiki/index.php/Commands
      "},{"location":"images/docker-swag/#updating-configs","title":"Updating configs","text":"
      • This container creates a number of configs for nginx, proxy samples, etc.
      • Config updates are noted in the changelog but not automatically applied to your files.
      • If you have modified a file with noted changes in the changelog:
      • Keep your existing configs as is (not broken, don't fix)
      • Review our repository commits and apply the new changes yourself
      • Delete the modified config file with listed updates, restart the container, reapply your changes
      • If you have NOT modified a file with noted changes in the changelog:
      • Delete the config file with listed updates, restart the container
      • Proxy sample updates are not listed in the changelog. See the changes here: https://github.com/linuxserver/reverse-proxy-confs/commits/master
      • Proxy sample files WILL be updated, however your renamed (enabled) proxy files will not.
      • You can check the new sample and adjust your active config as needed.
      "},{"location":"images/docker-swag/#migration-from-the-old-linuxserverletsencrypt-image","title":"Migration from the old linuxserver/letsencrypt image","text":"

      Please follow the instructions on this blog post.

      "},{"location":"images/docker-swag/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-swag/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nswag:\nimage: lscr.io/linuxserver/swag:latest\ncontainer_name: swag\ncap_add:\n- NET_ADMIN\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- URL=yourdomain.url\n- VALIDATION=http\n- SUBDOMAINS=www, #optional\n- CERTPROVIDER= #optional\n- DNSPLUGIN=cloudflare #optional\n- PROPAGATION= #optional\n- EMAIL= #optional\n- ONLY_SUBDOMAINS=false #optional\n- EXTRA_DOMAINS= #optional\n- STAGING=false #optional\nvolumes:\n- /path/to/appdata/config:/config\nports:\n- 443:443\n- 80:80 #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-swag/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=swag \\\n--cap-add=NET_ADMIN \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e URL=yourdomain.url \\\n-e VALIDATION=http \\\n-e SUBDOMAINS=www, `#optional` \\\n-e CERTPROVIDER= `#optional` \\\n-e DNSPLUGIN=cloudflare `#optional` \\\n-e PROPAGATION= `#optional` \\\n-e EMAIL= `#optional` \\\n-e ONLY_SUBDOMAINS=false `#optional` \\\n-e EXTRA_DOMAINS= `#optional` \\\n-e STAGING=false `#optional` \\\n-p 443:443 \\\n-p 80:80 `#optional` \\\n-v /path/to/appdata/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/swag:latest\n
      "},{"location":"images/docker-swag/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-swag/#ports-p","title":"Ports (-p)","text":"Parameter Function 443 Https port 80 Http port (required for http validation and http -> https redirect)"},{"location":"images/docker-swag/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. URL=yourdomain.url Top url you have control over (customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). VALIDATION=http Certbot validation method to use, options are http or dns (dns method also requires DNSPLUGIN variable set). SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud. For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns validation only) CERTPROVIDER= Optionally define the cert provider. Set to zerossl for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in EMAIL env var). Otherwise defaults to Let's Encrypt. DNSPLUGIN=cloudflare Required if VALIDATION is set to dns. Options are acmedns, aliyun, azure, cloudflare, cpanel, desec, digitalocean, directadmin, dnsimple, dnsmadeeasy, dnspod, do, domeneshop, duckdns, dynu, gandi, gehirn, godaddy, google, he, hetzner, infomaniak, inwx, ionos, linode, loopia, luadns, netcup, njalla, nsone, ovh, porkbun, rfc2136, route53, sakuracloud, standalone, transip, and vultr. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf. PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. EMAIL= Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). ONLY_SUBDOMAINS=false If you wish to get certs only for certain subdomains, but not the main domain (main domain may be hosted on another machine and cannot be validated), set this to true EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org STAGING=false Set to true to retrieve certs in staging mode. Rate limits will be much higher, but the resulting cert will not pass the browser's security test. Only to be used for testing purposes."},{"location":"images/docker-swag/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config All the config files including the webroot reside here."},{"location":"images/docker-swag/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-swag/#portainer-notice","title":"Portainer notice","text":"

      {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

      "},{"location":"images/docker-swag/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-swag/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-swag/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-swag/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-swag/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it swag /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f swag
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/swag:latest
      "},{"location":"images/docker-swag/#versions","title":"Versions","text":"
      • 08.12.22: - Revamp certbot init.
      • 03.12.22: - Remove defunct cloudxns plugin.
      • 22.11.22: - Pin acme to the same version as certbot.
      • 22.11.22: - Pin certbot to 1.32.0 until plugin compatibility improves.
      • 05.11.22: - Update acmedns plugin handling.
      • 06.10.22: - Switch to certbot-dns-duckdns. Update cpanel and gandi dns plugin handling. Minor adjustments to init logic.
      • 05.10.22: - Use certbot file hooks instead of command line hooks
      • 04.10.22: - Add godaddy and porkbun dns plugins.
      • 03.10.22: - Add default_server back to default site conf's https listen.
      • 22.09.22: - Added support for DO DNS validation.
      • 22.09.22: - Added certbot-dns-acmedns for DNS01 validation.
      • 20.08.22: - Existing users should update: nginx.conf - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
      • 10.08.22: - Added support for Dynu DNS validation.
      • 18.05.22: - Added support for Azure DNS validation.
      • 09.04.22: - Added certbot-dns-loopia for DNS01 validation.
      • 05.04.22: - Added support for standalone DNS validation.
      • 28.03.22: - created a logfile for fail2ban nginx-unauthorized in /etc/cont-init.d/50-config
      • 09.01.22: - Added a fail2ban jail for nginx unauthorized
      • 21.12.21: - Fixed issue with iptables not working as expected
      • 30.11.21: - Move maxmind to a new mod
      • 22.11.21: - Added support for Infomaniak DNS for certificate generation.
      • 20.11.21: - Added support for dnspod validation.
      • 15.11.21: - Added support for deSEC DNS for wildcard certificate generation.
      • 26.10.21: - Existing users should update: proxy.conf - Mitigate https://httpoxy.org/ vulnerabilities. Ref: https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx#Defeating-the-Attack-using-NGINX-and-NGINX-Plus
      • 23.10.21: - Fix Hurricane Electric (HE) DNS validation.
      • 12.10.21: - Fix deprecated LE root cert check to fix failures when using STAGING=true, and failures in revoking.
      • 06.10.21: - Added support for Hurricane Electric (HE) DNS validation. Added lxml build deps.
      • 01.10.21: - Check if the cert uses the old LE root cert, revoke and regenerate if necessary. Here's more info on LE root cert expiration
      • 19.09.21: - Add an optional header to opt out of Google FLoC in ssl.conf.
      • 17.09.21: - Mark SUBDOMAINS var as optional.
      • 01.08.21: - Add support for ionos dns validation.
      • 15.07.21: - Fix libmaxminddb issue due to upstream change.
      • 07.07.21: - Rebase to alpine 3.14.
      • 24.06.21: - Update default nginx conf folder.
      • 28.05.21: - Existing users should update: authelia-server.conf - Use resolver.conf and patch for CVE-2021-32637.
      • 20.05.21: - Modify resolver.conf generation to detect and ignore ipv6.
      • 14.05.21: - Existing users should update: nginx.conf, ssl.conf, proxy.conf, and the default site-conf - Rework nginx.conf to be inline with alpine upstream and relocate lines from other files. Use linuxserver.io wheel index for pip packages. Switch to using ffdhe4096 for dhparams.pem per RFC7919. Added worker_processes.conf, which sets the number of nginx workers, and resolver.conf, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later.
      • 21.04.21: - Existing users should update: authelia-server.conf and authelia-location.conf - Add remote name/email headers and pass http method.
      • 12.04.21: - Add php7-gmp and php7-pecl-mailparse.
      • 12.04.21: - Add support for vultr dns validation.
      • 14.03.21: - Add support for directadmin dns validation.
      • 12.02.21: - Clean up rust/cargo cache, which ballooned the image size in the last couple of builds.
      • 10.02.21: - Fix aliyun, domeneshop, inwx and transip dns confs for existing users.
      • 09.02.21: - Rebasing to alpine 3.13. Add nginx mods brotli and dav-ext. Remove nginx mods lua and lua-upstream (due to regression over the last couple of years).
      • 26.01.21: - Add support for hetzner dns validation.
      • 20.01.21: - Add check for ZeroSSL EAB retrieval.
      • 08.01.21: - Add support for getting certs from ZeroSSL via optional CERTPROVIDER env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled.
      • 03.01.21: - Existing users should update: /config/nginx/site-confs/default.conf - Add helper pages to aid troubleshooting
      • 10.12.20: - Add support for njalla dns validation
      • 09.12.20: - Check for template/conf updates and notify in the log. Add support for gehirn and sakuracloud dns validation.
      • 01.11.20: - Add support for netcup dns validation
      • 29.10.20: - Existing users should update: ssl.conf - Add frame-ancestors to Content-Security-Policy.
      • 04.10.20: - Existing users should update: nginx.conf, proxy.conf, and ssl.conf - Minor cleanups and reordering.
      • 20.09.20: - Existing users should update: nginx.conf - Added geoip2 configs. Added MAXMINDDB_LICENSE_KEY variable to readme.
      • 08.09.20: - Add php7-xsl.
      • 01.09.20: - Existing users should update: nginx.conf, proxy.conf, and various proxy samples - Global websockets across all configs.
      • 03.08.20: - Initial release.
      "},{"location":"images/docker-synclounge/","title":"synclounge","text":""},{"location":"images/docker-synclounge/#linuxserversynclounge","title":"linuxserver/synclounge","text":"

      Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.

      "},{"location":"images/docker-synclounge/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/synclounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-synclounge/#application-setup","title":"Application Setup","text":"

      The web app and the server are both accessible at http://SERVERIP:8088.

      Note: It is recommended to use http as the external proto with a reverse proxy due to https not working with external plex clients.

      "},{"location":"images/docker-synclounge/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-synclounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsynclounge:\nimage: lscr.io/linuxserver/synclounge:latest\ncontainer_name: synclounge\nenvironment:\n- TZ=Europe/London\n- AUTH_LIST=plexuser1,plexuser2,email1,machineid1 #optional\n- AUTOJOIN_ENABLED=false #optional\n- AUTOJOIN_ROOM=roomname #optional\nports:\n- 8088:8088\nrestart: unless-stopped\n
      "},{"location":"images/docker-synclounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=synclounge \\\n-e TZ=Europe/London \\\n-e AUTH_LIST=plexuser1,plexuser2,email1,machineid1 `#optional` \\\n-e AUTOJOIN_ENABLED=false `#optional` \\\n-e AUTOJOIN_ROOM=roomname `#optional` \\\n-p 8088:8088 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/synclounge:latest\n
      "},{"location":"images/docker-synclounge/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-synclounge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8088 Web app and server port"},{"location":"images/docker-synclounge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function TZ=Europe/London Specify a timezone to use EG Europe/London AUTH_LIST=plexuser1,plexuser2,email1,machineid1 If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces. AUTOJOIN_ENABLED=false DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room) - Set to true to let users autojoin the server and a room (specified by the AUTOJOIN_ROOM var). AUTOJOIN_ROOM=roomname DEPRECATED - (Still works but will be removed in the future in favor of the built-in var autojoin__room) - Set the room name for auto joining (requires AUTOJOIN_ENABLED set to true)."},{"location":"images/docker-synclounge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-synclounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-synclounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-synclounge/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-synclounge/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-synclounge/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it synclounge /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f synclounge
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' synclounge
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/synclounge:latest
      "},{"location":"images/docker-synclounge/#versions","title":"Versions","text":"
      • 29.11.22: - Rebase to alpine 3.17, upgrade to s6v3.
      • 19.09.22: - Rebase to alpine 3.15.
      • 12.02.21: - Fix optional dependency builds in aarch64 image.
      • 12.02.21: - Rebasing to alpine 3.13.
      • 28.10.20: - Update to v4. Env vars EXTERNAL_URL, EXTERNAL_SERVER_PORT and AUTOJOIN_PASSWORD are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED and AUTOJOIN_ROOM are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room. If you are reverse proxying, do not forget to update your proxy settings (here and here) as the server port and addresses are changed.
      • 11.10.20: - Pin builds to upstream commit 6aecc9bd while evaluating the breaking changes upstream.
      • 27.09.20: - Updating the external repo endpoint.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 11.05.20: - Initial Release.
      "},{"location":"images/docker-syncthing/","title":"syncthing","text":""},{"location":"images/docker-syncthing/#linuxserversyncthing","title":"linuxserver/syncthing","text":"

      Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.

      "},{"location":"images/docker-syncthing/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/syncthing:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-syncthing/#application-setup","title":"Application Setup","text":"

      **Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password for the webUI.

      "},{"location":"images/docker-syncthing/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-syncthing/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsyncthing:\nimage: lscr.io/linuxserver/syncthing:latest\ncontainer_name: syncthing\nhostname: syncthing #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/appdata/config:/config\n- /path/to/data1:/data1\n- /path/to/data2:/data2\nports:\n- 8384:8384\n- 22000:22000/tcp\n- 22000:22000/udp\n- 21027:21027/udp\nrestart: unless-stopped\n
      "},{"location":"images/docker-syncthing/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=syncthing \\\n--hostname=syncthing `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8384:8384 \\\n-p 22000:22000/tcp \\\n-p 22000:22000/udp \\\n-p 21027:21027/udp \\\n-v /path/to/appdata/config:/config \\\n-v /path/to/data1:/data1 \\\n-v /path/to/data2:/data2 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/syncthing:latest\n
      "},{"location":"images/docker-syncthing/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-syncthing/#ports-p","title":"Ports (-p)","text":"Parameter Function 8384 Application WebUI 22000/tcp Listening port (TCP) 22000/udp Listening port (UDP) 21027/udp Protocol discovery"},{"location":"images/docker-syncthing/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-syncthing/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /data1 Data1 /data2 Data2"},{"location":"images/docker-syncthing/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= Optionally the hostname can be defined."},{"location":"images/docker-syncthing/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-syncthing/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-syncthing/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-syncthing/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-syncthing/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it syncthing /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f syncthing
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syncthing
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syncthing:latest
      "},{"location":"images/docker-syncthing/#versions","title":"Versions","text":"
      • 17.08.22: - Build on alpine 3.16 for go 1.18).
      • 03.05.22: - Rebase to alpine 3.15 (builds on edge for go 1.18).
      • 05.10.21: - Rebase to alpine 3.14.
      • 12.05.21: - Remove sysctl parameter again
      • 03.05.21: - Raise maximum UDP buffer size.
      • 03.05.21: - Add port mapping for 22000/udp.
      • 29.01.21: - Deprecate UMASK_SET in favor of UMASK in baseimage, see above for more information.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 15.09.20: - Use go from alpine edge repo to compile. Remove duplicate UMASK env var. Add hostname setting.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 05.03.19: - Update Build process for v1.1.0 release.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 16.01.19: - Add pipeline logic and multi arch.
      • 30.07.18: - Rebase to alpine 3.8 and use buildstage.
      • 13.12.17: - Rebase to alpine 3.7.
      • 25.10.17: - Add env for manual setting of umask.
      • 29.07.17: - Simplify build structure as symlinks failing on > 0.14.32
      • 28.05.17: - Rebase to alpine 3.6.
      • 08.02.17: - Rebase to alpine 3.5.
      • 01.11.16: - Switch to compiling latest version from git source.
      • 14.10.16: - Add version layer information.
      • 30.09.16: - Fix umask.
      • 09.09.16: - Add layer badges to README.
      • 28.08.16: - Add badges to README.
      • 11.08.16: - Rebase to alpine linux.
      • 18.12.15: - Initial testing / release (IronicBadger)
      • 24.09.15: - Inital dev complete (Lonix)
      "},{"location":"images/docker-syslog-ng/","title":"syslog-ng","text":""},{"location":"images/docker-syslog-ng/#linuxserversyslog-ng","title":"linuxserver/syslog-ng","text":"

      syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.

      "},{"location":"images/docker-syslog-ng/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/syslog-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-syslog-ng/#application-setup","title":"Application Setup","text":"

      Edit /config/syslog-ng.conf to configure your logging sources and destinations. Note: As the application does not run as root you cannot listen on ports < 1024.

      The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl

      More info at syslog-ng.

      "},{"location":"images/docker-syslog-ng/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-syslog-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nsyslog-ng:\nimage: lscr.io/linuxserver/syslog-ng:latest\ncontainer_name: syslog-ng\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/log:/var/log #optional\nports:\n- 514:5514/udp\n- 601:6601/tcp\n- 6514:6514/tcp\nrestart: unless-stopped\n
      "},{"location":"images/docker-syslog-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=syslog-ng \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 514:5514/udp \\\n-p 601:6601/tcp \\\n-p 6514:6514/tcp \\\n-v /path/to/config:/config \\\n-v /path/to/log:/var/log `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/syslog-ng:latest\n
      "},{"location":"images/docker-syslog-ng/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-syslog-ng/#ports-p","title":"Ports (-p)","text":"Parameter Function 5514/udp Syslog UDP 6601/tcp Syslog TCP 6514/tcp Syslog TLS"},{"location":"images/docker-syslog-ng/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-syslog-ng/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Stores config and application files /var/log Stores logs collected by the syslog-ng service"},{"location":"images/docker-syslog-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-syslog-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-syslog-ng/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-syslog-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-syslog-ng/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-syslog-ng/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it syslog-ng /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f syslog-ng
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syslog-ng
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syslog-ng:latest
      "},{"location":"images/docker-syslog-ng/#versions","title":"Versions","text":"
      • 30.12.22: - Rebase to Alpine 3.17, add libdbi-drivers for SQL support.
      • 01.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 18.12.21: - Rebase to Alpine 3.15.
      • 01.07.21: - Rebase to Alpine 3.14.
      • 26.05.21: - Initial release.
      "},{"location":"images/docker-taisun/","title":"taisun","text":""},{"location":"images/docker-taisun/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

      This image is deprecated. We will not offer support for this image and it will not be updated. This project is no longer maintained for VDI please use: https://github.com/linuxserver/docker-webtop For web based docker management try: https://github.com/SelfhostedPro/Yacht https://www.portainer.io/

      "},{"location":"images/docker-taisun/#linuxservertaisun","title":"linuxserver/taisun","text":"

      Taisun is an application for a Docker enabled device with an emphasis on providing a web based interface for managing a single server. Taisun allows you to:

      • Deploy and manage web based virtual desktops.
      • Deploy Taisun specific stacks of applications
      • Browse available images on popular Docker repositories
      • Import a Docker project from any git repository and start developing on your choice of web based IDE or full Linux desktop
      • Spinup a developer container based on popular frameworks and work from a web based IDE
      • Single click remote server access to Taisun and your Docker applications
      "},{"location":"images/docker-taisun/#supported-architectures","title":"Supported Architectures","text":"

      Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-taisun/#application-setup","title":"Application Setup","text":"

      The webui is at http://localhost:3000, for more information on usage see here.

      "},{"location":"images/docker-taisun/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-taisun/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2\"\nservices:\ntaisun:\nimage: linuxserver/taisun\ncontainer_name: taisun\nnetwork_mode: bridge\nvolumes:\n- /var/run/docker.sock:/var/run/docker.sock\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-taisun/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=taisun \\\n-p 3000:3000 \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\n--restart unless-stopped \\\nlscr.io/linuxserver/taisun\n
      "},{"location":"images/docker-taisun/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-taisun/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Taisun WebUI."},{"location":"images/docker-taisun/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"images/docker-taisun/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /var/run/docker.sock Docker Socket on the system"},{"location":"images/docker-taisun/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-taisun/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-taisun/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-taisun/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-taisun/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it taisun /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f taisun
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' taisun
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/taisun
      "},{"location":"images/docker-taisun/#versions","title":"Versions","text":"
      • 02.02.22: - Deprecate.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 02.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 20.07.19: - Build compose bins from source, use minimal docker install from repos.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 30.03.19: - Updating docker-compose build dependancies for musl libc.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 13.02.19: - Initial release.
      "},{"location":"images/docker-tautulli/","title":"tautulli","text":""},{"location":"images/docker-tautulli/#linuxservertautulli","title":"linuxserver/tautulli","text":"

      Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.

      "},{"location":"images/docker-tautulli/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/tautulli:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-tautulli/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 Stable Tautulli releases develop \u2705 Built at head of Tautulli nightly branch"},{"location":"images/docker-tautulli/#application-setup","title":"Application Setup","text":"

      Access the webui at <your-ip>:8181, for more information check out Tautulli. To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server, turn on Show Advanced and set the Logs Folder to the folder you mapped.

      "},{"location":"images/docker-tautulli/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-tautulli/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\ntautulli:\nimage: lscr.io/linuxserver/tautulli:latest\ncontainer_name: tautulli\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 8181:8181\nrestart: unless-stopped\n
      "},{"location":"images/docker-tautulli/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=tautulli \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 8181:8181 \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/tautulli:latest\n
      "},{"location":"images/docker-tautulli/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-tautulli/#ports-p","title":"Ports (-p)","text":"Parameter Function 8181 WebUI"},{"location":"images/docker-tautulli/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-tautulli/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains tautulli config and database."},{"location":"images/docker-tautulli/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tautulli/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-tautulli/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-tautulli/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-tautulli/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-tautulli/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it tautulli /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f tautulli
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tautulli
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tautulli:latest
      "},{"location":"images/docker-tautulli/#versions","title":"Versions","text":"
      • 15.12.22: - Rebase master branch to Alpine 3.17.
      • 04.10.22: - Rebase master branch to Alpine 3.16, migrate to s6v3.
      • 10.01.22: - Rebase to Alpine 3.15.
      • 11.07.21: - Add curl package.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 11.07.20: - Add py3-openssl.
      • 05.06.20: - Rebasing to alpine 3.12. Rework to python3.
      • 12.04.20: - Added mock from pip and donate links.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 26.01.19: - Add pipeline logic and multi arch.
      • 23.10.18: - Update plex logs info in readm.
      • 16.08.18: - Rebase to alpine 3.8.
      • 10.03.18: - Rebrand to tautulli.
      • 12.12.17: - Rebase to alpine 3.7.
      • 21.07.17: - Internal git pull instead of at runtime.
      • 12.07.17: - Add inspect commands to README, move to jenkins build and push.
      • 25.05.17: - Rebase to alpine 3.6.
      • 20.04.17: - Add pycryptodomex pip package.
      • 07.02.17: - Rebase to alpine 3.5.
      • 09.09.16: - Add layer badges to README.
      • 27.08.16: - Add badges to README.
      • 08.08.16: - Rebase to alpine linux.
      • 16.07.15: - Inital Release.
      "},{"location":"images/docker-tester/","title":"tester","text":""},{"location":"images/docker-tester/#linuxservertester","title":"linuxserver/tester","text":"

      This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint

      "},{"location":"images/docker-tester/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-tester/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-tester/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\ntester:\nimage: lscr.io/linuxserver/tester:latest\ncontainer_name: tester\nenvironment:\n- URL=http://google.com\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-tester/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=tester \\\n-e URL=http://google.com \\\n-p 3000:3000 \\\n--restart unless-stopped \\\nlscr.io/linuxserver/tester:latest\n
      "},{"location":"images/docker-tester/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-tester/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 WebUI"},{"location":"images/docker-tester/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function URL=http://google.com Specify an endpoint, the container will automatically determine the correct protocol and program to use"},{"location":"images/docker-tester/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function"},{"location":"images/docker-tester/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tester/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-tester/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-tester/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-tester/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it tester /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f tester
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tester
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tester:latest
      "},{"location":"images/docker-tester/#versions","title":"Versions","text":"
      • 16.11.22: - Revert the rdesktop baseimage's sesman change that introduced a delay.
      • 24.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 18.04.20: - Initial release.
      "},{"location":"images/docker-thelounge/","title":"thelounge","text":""},{"location":"images/docker-thelounge/#linuxserverthelounge","title":"linuxserver/thelounge","text":"

      Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.

      "},{"location":"images/docker-thelounge/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/thelounge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-thelounge/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 Stable releases. next \u2705 Next Pre-Releases. nightly \u2705 Nightly images from commits in master."},{"location":"images/docker-thelounge/#application-setup","title":"Application Setup","text":"
      • When the application first runs, it will populate its /config

      • Stop the container

      • Now from the host, edit /config/config.js, wherever you've mapped it

      • In most cases you want the value public: false to allow named users only

      • Setting the two prefetch values to true improves usability, but uses more storage

      • Once you have the configuration you want, save it and start the container again

      • For each user, run the command

      • docker exec -it thelounge s6-setuidgid abc thelounge add <user>

      • You will be prompted to enter a password that will not be echoed.

      • Saving logs to disk is the default, this consumes more space but allows scrollback.

      • To log in to the application, browse to http://<hostip>:9000

      • You should now be prompted for a username and password on the webinterface.

      • Once logged in, you can add an IRC network. Some defaults are preset for Freenode

      "},{"location":"images/docker-thelounge/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-thelounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nthelounge:\nimage: lscr.io/linuxserver/thelounge:latest\ncontainer_name: thelounge\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- </path/to/appdata/config>:/config\nports:\n- 9000:9000\nrestart: unless-stopped\n
      "},{"location":"images/docker-thelounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=thelounge \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 9000:9000 \\\n-v </path/to/appdata/config>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/thelounge:latest\n
      "},{"location":"images/docker-thelounge/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-thelounge/#ports-p","title":"Ports (-p)","text":"Parameter Function 9000 Application WebUI"},{"location":"images/docker-thelounge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-thelounge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"images/docker-thelounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-thelounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-thelounge/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-thelounge/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-thelounge/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-thelounge/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it thelounge /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f thelounge
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' thelounge
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/thelounge:latest
      "},{"location":"images/docker-thelounge/#versions","title":"Versions","text":"
      • 18.12.22: - Rebasing master to alpine 3.17.
      • 24.10.22: - Fix sqlite3 build.
      • 12.04.22: - Install from source using yarn.
      • 11.04.22: - Rebasing to alpine 3.15 and switching from python2-dev to python3-dev for building node sqlite on arm.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 02.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 15.05.19: - Update Arm variant images to build sqlite3 module.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 28.01.19: - Add pipeline logic and multi arch.
      • 25.08.18: - Use global install, simplifies adding users.
      • 20.08.18: - Rebase to alpine 3.8.
      • 06.01.18: - Rebase to alpine 3.7.
      • 26.05.17: - Rebase to alpine 3.6.
      • 06.02.17: - Rebase to alpine 3.5.
      • 14.10.16: - Bump to pickup 2.10 release.
      • 14.10.16: - Add version layer information.
      • 11.09.16: - Add layer badges to README.
      • 31.08.16: - Initial Release.
      "},{"location":"images/docker-transmission/","title":"transmission","text":""},{"location":"images/docker-transmission/#linuxservertransmission","title":"linuxserver/transmission","text":"

      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, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.

      "},{"location":"images/docker-transmission/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/transmission:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-transmission/#application-setup","title":"Application Setup","text":"

      Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved.

      If you choose to use transmission-web-control as your default UI, just note that the origional Web UI will not be available to you despite the button being present.

      "},{"location":"images/docker-transmission/#securing-the-webui-with-a-usernamepassword","title":"Securing the webui with a username/password.","text":"

      Use the USER and PASS variables in docker run/create/compose to set authentication. Do not manually edit the settings.json to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.

      "},{"location":"images/docker-transmission/#updating-blocklists-automatically","title":"Updating Blocklists Automatically","text":"

      This requires \"blocklist-enabled\": true, to be set. By setting this to true, it is assumed you have also populated blocklist-url with a valid block list.

      The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon.

      The automatic update will run once a day at 3am local server time.

      "},{"location":"images/docker-transmission/#using-whitelist","title":"Using whitelist","text":"

      Use WHITELIST to enable a list of ip as whitelist. This enable support for rpc-whitelist. When WHITELIST is empty support for whitelist is disabled.

      Use HOST_WHITELIST to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist. When HOST_WHITELIST is empty support for host-whitelist is disabled.

      "},{"location":"images/docker-transmission/#use-alternative-transmission-torrent-ports","title":"Use alternative Transmission torrent ports","text":"

      Use PEERPORT to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.

      "},{"location":"images/docker-transmission/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-transmission/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\ntransmission:\nimage: lscr.io/linuxserver/transmission:latest\ncontainer_name: transmission\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- TRANSMISSION_WEB_HOME=/combustion-release/ #optional\n- USER=username #optional\n- PASS=password #optional\n- WHITELIST=iplist #optional\n- PEERPORT=peerport #optional\n- HOST_WHITELIST=dnsname list #optional\nvolumes:\n- /path/to/data:/config\n- /path/to/downloads:/downloads\n- /path/to/watch/folder:/watch\nports:\n- 9091:9091\n- 51413:51413\n- 51413:51413/udp\nrestart: unless-stopped\n
      "},{"location":"images/docker-transmission/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=transmission \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e TRANSMISSION_WEB_HOME=/combustion-release/ `#optional` \\\n-e USER=username `#optional` \\\n-e PASS=password `#optional` \\\n-e WHITELIST=iplist `#optional` \\\n-e PEERPORT=peerport `#optional` \\\n-e HOST_WHITELIST=dnsname list `#optional` \\\n-p 9091:9091 \\\n-p 51413:51413 \\\n-p 51413:51413/udp \\\n-v /path/to/data:/config \\\n-v /path/to/downloads:/downloads \\\n-v /path/to/watch/folder:/watch \\\n--restart unless-stopped \\\nlscr.io/linuxserver/transmission:latest\n
      "},{"location":"images/docker-transmission/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-transmission/#ports-p","title":"Ports (-p)","text":"Parameter Function 9091 WebUI 51413 Torrent Port TCP 51413/udp Torrent Port UDP"},{"location":"images/docker-transmission/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. TRANSMISSION_WEB_HOME=/combustion-release/ Specify an alternative UI options are /combustion-release/, /transmission-web-control/, /kettu/, /flood-for-transmission/, and /transmissionic/. USER=username Specify an optional username for the interface PASS=password Specify an optional password for the interface WHITELIST=iplist Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting. PEERPORT=peerport Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting. HOST_WHITELIST=dnsname list Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting."},{"location":"images/docker-transmission/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where transmission should store config files and logs. /downloads Local path for downloads. /watch Watch folder for torrent files."},{"location":"images/docker-transmission/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-transmission/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-transmission/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-transmission/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-transmission/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-transmission/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it transmission /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f transmission
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' transmission
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/transmission:latest
      "},{"location":"images/docker-transmission/#versions","title":"Versions","text":"
      • 05.01.23: - Rebase to Alpine 3.17, restore GNU findutils package.
      • 02.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 12.08.22: - Bump unrar to 6.1.7.
      • 03.04.22: - Add Transmissionic as a UI option.
      • 21.02.22: - Build unrar from source, rebase to Alpine 3.15, add symlinks neeeded for TWC. Credit @alexbelgium
      • 09.07.21: - Wait for the transmission-daemon termination after a caught sigterm.
      • 06.03.21: - Add Flood for Transmission as a UI option.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 02.11.20: - Add ca-certificates package to allow connecting to https trackers.
      • 02.06.20: - Rebase to alpine 3.12, update to transmission 3.0, remove python2, add python3.
      • 11.05.20: - Remove unnecessary chmod (remnant of previous change).
      • 28.04.20: - Use transmission-remote to update blocklist.
      • 30.03.20: - Internalize blocklist-update.sh.
      • 29.03.20: - Update auth info in readme.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 04.10.19: - Update package label.
      • 21.08.19: - Add optional user/pass environment variables, fix transmission shut down if user/pass are set.
      • 19.07.19: - Send SIGTERM in blocklist update to properly close pid.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebase to Alpine 3.9, add themes to baseimage, add python and findutils.
      • 22.02.19: - Catch term and clean exit.
      • 07.02.19: - Add pipeline logic and multi arch.
      • 15.08.18: - Rebase to alpine linux 3.8.
      • 12.02.18: - Pull transmission from edge repo.
      • 10.01.18: - Rebase to alpine linux 3.7.
      • 25.07.17: - Add rsync package.
      • 27.05.17: - Rebase to alpine linux 3.6.
      • 06.02.17: - Rebase to alpine linux 3.5.
      • 15.01.17: - Add p7zip, tar, unrar, and unzip packages.
      • 16.10.16: - Blocklist autoupdate with optional authentication.
      • 14.10.16: - Add version layer informationE.
      • 23.09.16: - Add information about securing the webui to README.
      • 21.09.16: - Add curl package.
      • 09.09.16: - Add layer badges to README.
      • 28.08.16: - Add badges to README.
      • 09.08.16: - Rebase to alpine linux.
      • 06.12.15: - Separate mapping for watch folder.
      • 16.11.15: - Initial Release.
      "},{"location":"images/docker-tvheadend/","title":"tvheadend","text":""},{"location":"images/docker-tvheadend/#linuxservertvheadend","title":"linuxserver/tvheadend","text":"

      Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).

      "},{"location":"images/docker-tvheadend/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/tvheadend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-tvheadend/#application-setup","title":"Application Setup","text":"

      The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.

      Stable

      First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services.

      After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG.

      Latest

      The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend.

      Configuring XMLTV grabber

      To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.

      docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure\n

      Now follow the onscreen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber.

      If you allready have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it.

      Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --> Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field.

      /usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\"\n

      Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file.

      FFmpeg

      FFmpeg is installed in /usr/bin/ in case you need to use it with pipe.

      EPG XML file

      If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml.

      For advanced setup of tvheadend, go to [Tvheadend][appurl]

      Picons

      We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. You need to enable minimum advanced view level to see the picons options.

      "},{"location":"images/docker-tvheadend/#additional-runtime-parameters","title":"Additional runtime parameters","text":"

      In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.

      "},{"location":"images/docker-tvheadend/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-tvheadend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\ntvheadend:\nimage: lscr.io/linuxserver/tvheadend:latest\ncontainer_name: tvheadend\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- RUN_OPTS= #optional\nvolumes:\n- /path/to/data:/config\n- /path/to/recordings:/recordings\nports:\n- 9981:9981\n- 9982:9982\ndevices:\n- /dev/dri:/dev/dri #optional\n- /dev/dvb:/dev/dvb #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-tvheadend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=tvheadend \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e RUN_OPTS= `#optional` \\\n-p 9981:9981 \\\n-p 9982:9982 \\\n-v /path/to/data:/config \\\n-v /path/to/recordings:/recordings \\\n--device /dev/dri:/dev/dri `#optional` \\\n--device /dev/dvb:/dev/dvb `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/tvheadend:latest\n
      "},{"location":"images/docker-tvheadend/#host-vs-bridge","title":"Host vs. Bridge","text":"

      If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250 and a UDP port of 1900 which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stabilty problems. These can be solved by giving tvheadend its own IP using macvlan.

      "},{"location":"images/docker-tvheadend/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-tvheadend/#ports-p","title":"Ports (-p)","text":"Parameter Function 9981 WebUI 9982 HTSP server port."},{"location":"images/docker-tvheadend/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. RUN_OPTS= Optionally specify additional arguments to be passed. See Additional runtime parameters."},{"location":"images/docker-tvheadend/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where TVHeadend show store it's config files. /recordings Where you want the PVR to store recordings."},{"location":"images/docker-tvheadend/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). /dev/dvb Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out."},{"location":"images/docker-tvheadend/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tvheadend/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-tvheadend/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-tvheadend/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-tvheadend/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-tvheadend/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it tvheadend /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f tvheadend
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tvheadend
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tvheadend:latest
      "},{"location":"images/docker-tvheadend/#versions","title":"Versions","text":"
      • 31.08.22: - Update sample env vars and how RUN_OPTS are handled.
      • 19.08.22: - Switch to new picons builder.
      • 16.04.22: - Added URL XMLTV grabber.
      • 05.01.22: - Rebase to Alpine 3.15. Disable execinfo to fix builds. Update xmltv.
      • 11.05.21: - Added Intel iHD driver support.
      • 02.06.20: - Update to Alpine 3.12.
      • 27.12.19: - Add requests and perl-json-xs package.
      • 27.12.19: - Update to Alpine 3.11.
      • 02.10.19: - Improve permission fixing on render & dvb devices.
      • 18.08.19: - Add AMD drivers.
      • 02.08.19: - Attempt to automatically fix permissions on /dev/dri and /dev/dvb.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 27.03.19: - Rebase to Alpine 3.9, fix init logic to only chown once.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 01.03.19: - Bump xmltv to 0.6.1.
      • 28.02.19: - add perl-lwp-useragent-determined.
      • 17.02.19: - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.
      • 14.02.19: - Add picons path to config.
      • 15.01.19: - Add pipeline logic and multi arch.
      • 12.09.18: - Rebase to alpine 3.8 and use buildstage type build.
      • 21.04.18: - Add JSON::XS Perl package for grab_tv_huro.
      • 24.03.18: - Add dvbcsa package.
      • 04.03.18: - Use sourceforge master rather than mirror for xmltv.
      • 22.02.18: - Add lost libva-intel-driver.
      • 21.02.18: - Fix wrong version of iconv used.
      • 18.02.18: - Add vaapi support, some cleanup and dropping of deprecated options.
      • 04.01.18: - Deprecate cpu_core routine lack of scaling.
      • 11.12.17: - Rebase to alpine 3.7, linting fixes.
      • 02.09.17: - Add codec dependencies.
      • 13.07.17: - Increase uniformity across all archs.
      • 08.07.17: - Update README with full path for comskip.
      • 02.07.17: - Move to one branch for all 4.2 releases.
      • 27.05.17: - Rebase to alpine 3.6.
      • 01.05.17: - Update to tvheadend 4.2.1 stable.
      • 18.04.17: - Use repo version of gnu-libiconv rather than compiling.
      • 09.04.17: - Chain cpanm installs in one block and use --installdeps.
      • 09.02.17: - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
      • 07.02.17: - Add variable to add additional runtime paramters.
      • 05.02.17: - Update to alpine 3.5 and change dvb-apps to only compile needed libs.
      • 14.11.16: - Add picons from picons.xyz to /picons folder and add info to README.
      • 22.09.16: - Fix broken tv_grab_wg, libs for xmltv and update README.
      • 18.09.16: - Update XMLTV to 0.5.68 and update README.
      • 10.09.16: - Add layer badges to README.
      • 05.09.16: - Initial Release.
      "},{"location":"images/docker-ubooquity/","title":"ubooquity","text":""},{"location":"images/docker-ubooquity/#linuxserverubooquity","title":"linuxserver/ubooquity","text":"

      Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.

      "},{"location":"images/docker-ubooquity/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/ubooquity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-ubooquity/#application-setup","title":"Application Setup","text":"

      IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below.

      Access the admin page at http://<your-ip>:2203/ubooquity/admin and set a password.

      Then you can access the webui at http://<your-ip>:2202/ubooquity/

      This container will automatically scan your files at startup.

      "},{"location":"images/docker-ubooquity/#maxmem","title":"MAXMEM","text":"

      The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That\u2019s when you get java.lang.OutOfMemoryError: Java heap space errors.

      You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB )

      If no value is set it will default to 512MB.

      "},{"location":"images/docker-ubooquity/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-ubooquity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nubooquity:\nimage: lscr.io/linuxserver/ubooquity:latest\ncontainer_name: ubooquity\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- MAXMEM=<maxmem>\nvolumes:\n- <path to data>:/config\n- <path to books>:/books\n- <path to comics>:/comics\n- <path to raw files>:/files\nports:\n- 2202:2202\n- 2203:2203\nrestart: unless-stopped\n
      "},{"location":"images/docker-ubooquity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=ubooquity \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e MAXMEM=<maxmem> \\\n-p 2202:2202 \\\n-p 2203:2203 \\\n-v <path to data>:/config \\\n-v <path to books>:/books \\\n-v <path to comics>:/comics \\\n-v <path to raw files>:/files \\\n--restart unless-stopped \\\nlscr.io/linuxserver/ubooquity:latest\n
      "},{"location":"images/docker-ubooquity/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-ubooquity/#ports-p","title":"Ports (-p)","text":"Parameter Function 2202 The library port. 2203 The admin port."},{"location":"images/docker-ubooquity/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. MAXMEM=<maxmem> To set the maximum memory. ( ex: set '1024' for 1GB )"},{"location":"images/docker-ubooquity/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Config files and database for ubooquity. /books Location of books. /comics Location of comics. /files Location of raw files."},{"location":"images/docker-ubooquity/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ubooquity/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-ubooquity/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-ubooquity/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-ubooquity/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-ubooquity/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it ubooquity /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f ubooquity
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ubooquity
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ubooquity:latest
      "},{"location":"images/docker-ubooquity/#versions","title":"Versions","text":"
      • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 28.01.19: - Add pipeline logic and multi arch.
      • 15.10.18: - Upgrade to Ubooquity 2.1.2.
      • 23.08.18: - Rebase to alpine 3.8.
      • 09.12.17: - Rebase to alpine 3.7.
      • 07.10.17: - Upgrade to Ubooquity 2.1.1.
      • 16.07.17: - Upgrade to Ubooquity 2.1.0, see setting up application section for important info for existing v1.x users.
      • 26.05.17: - Rebase to alpine 3.6.
      • 08.04.17: - Switch to java from 3.5 repo, fixes login crashes.
      • 06.02.17: - Rebase to alpine 3.5.
      • 06.12.16: - Initial Release.
      "},{"location":"images/docker-unifi-controller/","title":"unifi-controller","text":""},{"location":"images/docker-unifi-controller/#linuxserverunifi-controller","title":"linuxserver/unifi-controller","text":"

      The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.

      "},{"location":"images/docker-unifi-controller/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u274c"},{"location":"images/docker-unifi-controller/#application-setup","title":"Application Setup","text":"

      The webui is at https://ip:8443, setup with the first run wizard.

      For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System Settings > Controller Configuration and set the Controller Hostname/IP to a hostname or IP address accessible by your devices. Additionally the checkbox \"Override inform host with controller hostname/IP\" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).

      In order to manually adopt a device take these steps:

      ssh ubnt@$AP-IP\nset-inform http://$address:8080/inform\n

      The default device password is ubnt. $address is the IP address of the host you are running this container on and $AP-IP is the Access Point IP address.

      When using a Security Gateway (router) it could be that network connected devices are unable to obtain an ip address. This can be fixed by setting \"DHCP Gateway IP\", under Settings > Networks > network_name, to a correct (and accessable) ip address.

      "},{"location":"images/docker-unifi-controller/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

      This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

      "},{"location":"images/docker-unifi-controller/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-unifi-controller/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nunifi-controller:\nimage: lscr.io/linuxserver/unifi-controller:latest\ncontainer_name: unifi-controller\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- MEM_LIMIT=1024 #optional\n- MEM_STARTUP=1024 #optional\nvolumes:\n- <path to data>:/config\nports:\n- 8443:8443\n- 3478:3478/udp\n- 10001:10001/udp\n- 8080:8080\n- 1900:1900/udp #optional\n- 8843:8843 #optional\n- 8880:8880 #optional\n- 6789:6789 #optional\n- 5514:5514/udp #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-unifi-controller/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=unifi-controller \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e MEM_LIMIT=1024 `#optional` \\\n-e MEM_STARTUP=1024 `#optional` \\\n-p 8443:8443 \\\n-p 3478:3478/udp \\\n-p 10001:10001/udp \\\n-p 8080:8080 \\\n-p 1900:1900/udp `#optional` \\\n-p 8843:8843 `#optional` \\\n-p 8880:8880 `#optional` \\\n-p 6789:6789 `#optional` \\\n-p 5514:5514/udp `#optional` \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/unifi-controller:latest\n
      "},{"location":"images/docker-unifi-controller/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-unifi-controller/#ports-p","title":"Ports (-p)","text":"Parameter Function 8443 Unifi web admin port 3478/udp Unifi STUN port 10001/udp Required for AP discovery 8080 Required for device communication 1900/udp Required for Make controller discoverable on L2 network option 8843 Unifi guest portal HTTPS redirect port 8880 Unifi guest portal HTTP redirect port 6789 For mobile throughput test 5514/udp Remote syslog port"},{"location":"images/docker-unifi-controller/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use (e.g. Europe/London) - see list MEM_LIMIT=1024 Optionally change the Java memory limit (in Megabytes). Set to default to reset to default MEM_STARTUP=1024 Optionally change the Java initial/minimum memory (in Megabytes). Set to default to reset to default"},{"location":"images/docker-unifi-controller/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config All Unifi data stored here"},{"location":"images/docker-unifi-controller/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-unifi-controller/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-unifi-controller/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-unifi-controller/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-unifi-controller/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-unifi-controller/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it unifi-controller /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f unifi-controller
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-controller
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-controller:latest
      "},{"location":"images/docker-unifi-controller/#versions","title":"Versions","text":"
      • 30.11.22: - Bump JRE to 11.
      • 01.06.22: - Deprecate armhf.
      • 23.12.21: - Move min/max memory config from run to system.properties.
      • 22.12.21: - Move deb package install to first init to avoid overlayfs performance issues.
      • 13.12.21: - Rebase 64 bit containers to Focal.
      • 11.12.21: - Add java opts to mitigate CVE-2021-44228.
      • 11.06.21: - Allow for changing Java initial mem via new optional environment variable.
      • 12.01.21: - Deprecate the LTS tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully.
      • 17.07.20: - Rebase 64 bit containers to Bionic and Mongo 3.6.
      • 16.06.20: - Add logrotate.
      • 02.06.20: - Updated port list & descriptions. Moved some ports to optional.
      • 14.11.19: - Changed url for deb package to match new Ubiquity domain.
      • 29.07.19: - Allow for changing Java mem limit via new optional environment variable.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 10.02.19: - Initial release of new unifi-controller image with new tags and pipeline logic
      "},{"location":"images/docker-webgrabplus/","title":"webgrabplus","text":""},{"location":"images/docker-webgrabplus/#linuxserverwebgrabplus","title":"linuxserver/webgrabplus","text":"

      Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.

      "},{"location":"images/docker-webgrabplus/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/webgrabplus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-webgrabplus/#application-setup","title":"Application Setup","text":"

      To configure WebGrab+Plus follow the documentation

      Please note that depending on your host this container may not work with the no-new-privileges=true security-opt.

      Note that there are some things in the guide that does not apply to this container. Below you can find the changes.

      The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file!

      The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to.

      To adjust the scheduled cron job for grabbing, edit the wg3-cron file found in the /config folder. After you have edited the the wg3-cron file, restart the container to apply the new schedule. Do not adjust the command!

      Note that due to something in version 3, we had to change the commands for scheduling the grab. If you have a version where there is a wg-cron file in your /config mount, delete it and use wg3-cron instead.

      Below is the syntax of the cron file.

       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0 - 59)\n \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0 - 23)\n \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1 - 31)\n \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 month (1 - 12)\n \u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of week (0 - 6) (Sunday to Saturday;\n \u2502 \u2502 \u2502 \u2502 \u2502                                       7 is also Sunday on some systems)\n \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502\n * * * * *  /bin/bash /defaults/update.sh\n
      "},{"location":"images/docker-webgrabplus/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-webgrabplus/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nwebgrabplus:\nimage: lscr.io/linuxserver/webgrabplus:latest\ncontainer_name: webgrabplus\nhostname: webgrabplus\nmac_address: 00:00:00:00:00:00\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\n- /path/to/data:/data\nrestart: unless-stopped\n
      "},{"location":"images/docker-webgrabplus/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=webgrabplus \\\n--hostname=webgrabplus \\\n--mac-address=00:00:00:00:00:00 \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-v /path/to/config:/config \\\n-v /path/to/data:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/webgrabplus:latest\n
      "},{"location":"images/docker-webgrabplus/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-webgrabplus/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-webgrabplus/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"images/docker-webgrabplus/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where webgrabplus should store it's config files. /data Where webgrabplus should store it's data files."},{"location":"images/docker-webgrabplus/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= Set the hostname for the container for the license check. --mac-address= Set the mac_address for the container for the license check."},{"location":"images/docker-webgrabplus/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-webgrabplus/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-webgrabplus/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-webgrabplus/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-webgrabplus/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it webgrabplus /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f webgrabplus
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webgrabplus
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webgrabplus:latest
      "},{"location":"images/docker-webgrabplus/#versions","title":"Versions","text":"
      • 23.03.22: - Rebase to Alpine 3.16 and s6v3. Update to dotnet 6.
      • 29.04.22: - Add hostname and mac_address arguments that are needed for the license check to compose and cli samples.
      • 23.03.22: - Rebase to Alpine 3.15.
      • 23.03.22: - Update to use dotnet instead of mono.
      • 06.01.22: - Rebase to Ubuntu focal. Enable auto builds on version updates (beta and stable).
      • 17.12.21: - Update to version 3.2.2 beta.
      • 05.08.21: - Update to version 3.2.1 beta.
      • 05.06.21: - Added mono-devel dependency.
      • 04.06.21: - Update to version 3.1.8 beta.
      • 22.03.21: - Update to version 3.1.7 beta.
      • 07.03.21: - Update to version 3.1.6 beta.
      • 29.01.21: - Update external version number to show as 3.1.5.
      • 24.01.21: - Update to version 3.1.5 beta.
      • 22.12.20: - Update to version 3.1.4 beta.
      • 12.10.20: - Fix version number in jenkinsfile.
      • 12.10.20: - Update to version 3.1.1 beta.
      • 22.06.20: - Add mono webrequest library.
      • 18.06.20: - Update to v3.1.0.
      • 29.03.20: - Update to v3.0.0. Changed to use wg3-cron file.
      • 28.05.19: - Update to v2.1.0 and beta v2.1.9, rebase to bionic.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 21.03.19: - Update to beta 2.1.7.
      • 19.02.19: - Add pipeline logic and multi arch.
      • 18.01.18: - Initial Release.
      "},{"location":"images/docker-webtop/","title":"webtop","text":""},{"location":"images/docker-webtop/#linuxserverwebtop","title":"linuxserver/webtop","text":"

      Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.

      "},{"location":"images/docker-webtop/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/webtop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-webtop/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch"},{"location":"images/docker-webtop/#application-setup","title":"Application Setup","text":"

      The Webtop can be accessed at:

      • http://yourhost:3000/

      By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

      • http://yourhost:3000/?login=true

      You can also force login on the '/' path without this parameter by passing the environment variable -e AUTO_LOGIN=false.

      You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste, an onscreen keyboard, or a baked in file manager. This can also be accessed by clicking the small circle on the left side of the screen.

      Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined setting to allow these syscalls or try podman as they have updated their codebase to support them

      Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program

      "},{"location":"images/docker-webtop/#keyboard-layouts","title":"Keyboard Layouts","text":"

      This should match the layout on the computer you are accessing the container from.

      The keyboard layouts available for use are: * da-dk-qwerty- Danish keyboard * de-ch-qwertz- Swiss German keyboard (qwertz) * de-de-qwertz- German keyboard (qwertz) - OSK available * en-gb-qwerty- English (UK) keyboard * en-us-qwerty- English (US) keyboard - OSK available DEFAULT * es-es-qwerty- Spanish keyboard - OSK available * fr-ch-qwertz- Swiss French keyboard (qwertz) * fr-fr-azerty- French keyboard (azerty) - OSK available * it-it-qwerty- Italian keyboard - OSK available * ja-jp-qwerty- Japanese keyboard * pt-br-qwerty- Portuguese Brazilian keyboard * sv-se-qwerty- Swedish keyboard * tr-tr-qwerty- Turkish-Q keyboard

      If you ever lose your password you can always reset it by execing into the container as root:

      docker exec -it webtop passwd abc\n
      By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet.

      "},{"location":"images/docker-webtop/#hardware-acceleration-ubuntu-container-only","title":"Hardware Acceleration (Ubuntu Container Only)","text":"

      Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.

      "},{"location":"images/docker-webtop/#intelatiamd","title":"Intel/ATI/AMD","text":"

      To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

      --device=/dev/dri:/dev/dri\n
      We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

      "},{"location":"images/docker-webtop/#nvidia","title":"Nvidia","text":"

      Hardware acceleration users for Nvidia will need to install the container runtime provided by Nvidia on their host, instructions can be found here: https://github.com/NVIDIA/nvidia-docker

      We automatically add the necessary environment variable that will utilise all the features available on a GPU on the host. Once nvidia-docker is installed on your host you will need to re/create the docker container with the nvidia container runtime --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

      "},{"location":"images/docker-webtop/#arm-devices","title":"Arm Devices","text":"

      Best effort is made to install tools to allow mounting in /dev/dri on Arm devices. In most cases if /dev/dri exists on the host it should just work. If running a Raspberry Pi 4 be sure to enable dtoverlay=vc4-fkms-v3d in your usercfg.txt.

      "},{"location":"images/docker-webtop/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-webtop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nwebtop:\nimage: lscr.io/linuxserver/webtop:latest\ncontainer_name: webtop\nsecurity_opt:\n- seccomp:unconfined #optional\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SUBFOLDER=/ #optional\n- KEYBOARD=en-us-qwerty #optional\n- TITLE=Webtop #optional\nvolumes:\n- /path/to/data:/config\n- /var/run/docker.sock:/var/run/docker.sock #optional\nports:\n- 3000:3000\ndevices:\n- /dev/dri:/dev/dri #optional\nshm_size: \"1gb\" #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-webtop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=webtop \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SUBFOLDER=/ `#optional` \\\n-e KEYBOARD=en-us-qwerty `#optional` \\\n-e TITLE=Webtop `#optional` \\\n-p 3000:3000 \\\n-v /path/to/data:/config \\\n-v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n--device /dev/dri:/dev/dri `#optional` \\\n--shm-size=\"1gb\" `#optional` \\\n--restart unless-stopped \\\nlscr.io/linuxserver/webtop:latest\n
      "},{"location":"images/docker-webtop/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-webtop/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web Desktop GUI"},{"location":"images/docker-webtop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/ KEYBOARD=en-us-qwerty See the keyboard layouts section for more information and options. TITLE=Webtop String which will be used as page/tab title in the web browser."},{"location":"images/docker-webtop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config abc users home directory /var/run/docker.sock Docker Socket on the system, if you want to use Docker in the container"},{"location":"images/docker-webtop/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Add this for GL support (Linux hosts only)"},{"location":"images/docker-webtop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= We set this to 1 gig to prevent modern web browsers from crashing --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-webtop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-webtop/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-webtop/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-webtop/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-webtop/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it webtop /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f webtop
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webtop
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webtop:latest
      "},{"location":"images/docker-webtop/#versions","title":"Versions","text":"
      • 21.10.22: - Rebase xfce to Alpine 3.16, migrate to s6v3.
      • 12.03.22: - Add documentation for mounting in a GPU.
      • 05.02.22: - Rebase KDE Ubuntu to Jammy, add new documentation for updated gclient, stop recommending priv mode.
      • 21.09.21: - Add Fedora and Arch images, show seccomp settings in readme.
      • 26.09.21: - Rebase to Alpine versions to 3.14.
      • 20.04.21: - Initial release.
      "},{"location":"images/docker-wikijs/","title":"wikijs","text":""},{"location":"images/docker-wikijs/#linuxserverwikijs","title":"linuxserver/wikijs","text":"

      Wikijs A modern, lightweight and powerful wiki app built on NodeJS.

      "},{"location":"images/docker-wikijs/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/wikijs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-wikijs/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-wikijs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nwikijs:\nimage: lscr.io/linuxserver/wikijs:latest\ncontainer_name: wikijs\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to config>:/config\n- <path to data>:/data\nports:\n- 3000:3000\nrestart: unless-stopped\n
      "},{"location":"images/docker-wikijs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=wikijs \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 \\\n-v <path to config>:/config \\\n-v <path to data>:/data \\\n--restart unless-stopped \\\nlscr.io/linuxserver/wikijs:latest\n
      "},{"location":"images/docker-wikijs/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-wikijs/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Port for Wiki.js's web interface."},{"location":"images/docker-wikijs/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-wikijs/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Wiki.js config is stored. /data Where Wiki.js data is stored."},{"location":"images/docker-wikijs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-wikijs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-wikijs/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-wikijs/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-wikijs/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-wikijs/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it wikijs /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f wikijs
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wikijs
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wikijs:latest
      "},{"location":"images/docker-wikijs/#versions","title":"Versions","text":"
      • 10.10.22: - Rebasing to alpine 3.16, migrate to s6v3.
      • 23.01.21: - Rebasing to alpine 3.13.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 28.04.20: - Added python dependency for some NPM modules as well as git for storage module
      • 14.12.19: - Initial Release.
      "},{"location":"images/docker-wireguard/","title":"wireguard","text":""},{"location":"images/docker-wireguard/#linuxserverwireguard","title":"linuxserver/wireguard","text":"

      WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

      "},{"location":"images/docker-wireguard/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/wireguard:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-wireguard/#version-tags","title":"Version Tags","text":"

      This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

      Tag Available Description latest \u2705 Stable releases with support for compiling Wireguard modules alpine \u2705 Stable releases based on Alpine without support for compiling Wireguard modules"},{"location":"images/docker-wireguard/#application-setup","title":"Application Setup","text":"

      During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container.

      If the kernel is not built-in, or installed on host, the container will check if the kernel headers are present (in /usr/src) and if not, it will attempt to download the necessary kernel headers from the ubuntu xenial/bionic, debian/raspbian buster repos; then will attempt to compile and install the kernel module. If the kernel headers are not found in either usr/src or in the repos mentioned, container will sleep indefinitely as wireguard cannot be installed.

      If you're on a debian/ubuntu based host with a custom or downstream distro provided kernel (ie. Pop!_OS), the container won't be able to install the kernel headers from the regular ubuntu and debian repos. In those cases, you can try installing the headers on the host via sudo apt install linux-headers-$(uname -r) (if distro version) and then add a volume mapping for /usr/src:/usr/src, or if custom built, map the location of the existing headers to allow the container to use host installed headers to build the kernel module (tested successful on Pop!_OS, ymmv).

      With regards to arm32/64 devices, Raspberry Pi 2-4 running the official ubuntu images or Raspbian Buster are supported out of the box. For all other devices and OSes, you can try installing the kernel headers on the host, and mapping /usr/src:/usr/src and it may just work (no guarantees).

      This can be run as a server or a client, based on the parameters used.

      "},{"location":"images/docker-wireguard/#server-mode","title":"Server Mode","text":"

      If the environment variable PEERS is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log. They will also be saved in text and png format under /config/peerX in case PEERS is a variable and an integer or /config/peer_X in case a list of names was provided instead of an integer.

      Variables SERVERURL, SERVERPORT, INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.

      To add more peers/clients later on, you increment the PEERS environment variable or add more elements to the list and recreate the container.

      To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5 or docker exec -it wireguard /app/show-peer myPC myPhone myTablet (Keep in mind that the QR codes are also stored as PNGs in the config folder).

      The templates used for server and peer confs are saved under /config/templates. Advanced users can modify these templates and force conf generation by deleting /config/wg0.conf and restarting the container.

      "},{"location":"images/docker-wireguard/#client-mode","title":"Client Mode","text":"

      Do not set the PEERS environment variable. Drop your client conf into the config folder as /config/wg0.conf and start the container.

      If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs line in your peer/client wg0.conf to include only 0.0.0.0/0 and not ::/0; and restart the container.

      "},{"location":"images/docker-wireguard/#road-warriors-roaming-and-returning-home","title":"Road warriors, roaming and returning home","text":"

      If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost.

      This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally).

      Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.

      "},{"location":"images/docker-wireguard/#maintaining-local-access-to-attached-services","title":"Maintaining local access to attached services","text":"

      ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.

      When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require):

      [Interface]\nPrivateKey = <private key>\nAddress = 9.8.7.6/32\nDNS = 8.8.8.8\nPostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT;  iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT\nPreDown = HOMENET=192.168.0.0/16; HOMENET2=10.0.0.0/8; HOMENET3=172.16.0.0/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT\n
      "},{"location":"images/docker-wireguard/#site-to-site-vpn","title":"Site-to-site VPN","text":"

      ** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.

      Site-to-site VPN in server mode requires customizing the AllowedIPs statement for a specific peer in wg0.conf. Since wg0.conf is autogenerated when server vars are changed, it is not recommended to edit it manually.

      In order to customize the AllowedIPs statement for a specific peer in wg0.conf, you can set an env var SERVER_ALLOWEDIPS_PEER_<peer name or number> to the additional subnets you'd like to add, comma separated and excluding the peer IP (ie. \"192.168.1.0/24,192.168.2.0/24\"). Replace <peer name or number> with either the name or number of a peer (whichever is used in the PEERS var).

      For instance SERVER_ALLOWEDIPS_PEER_laptop=\"192.168.1.0/24,192.168.2.0/24\" will result in the wg0.conf entry AllowedIPs = 10.13.13.2,192.168.1.0/24,192.168.2.0/24 for the peer named laptop.

      Keep in mind that this var will only be considered when the confs are regenerated. Adding this var for an existing peer won't force a regeneration. You can delete wg0.conf and restart the container to force regeneration if necessary.

      Don't forget to set the necessary POSTUP and POSTDOWN rules in your client's peer conf for lan access.

      "},{"location":"images/docker-wireguard/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-wireguard/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nwireguard:\nimage: lscr.io/linuxserver/wireguard:latest\ncontainer_name: wireguard\ncap_add:\n- NET_ADMIN\n- SYS_MODULE\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\n- SERVERURL=wireguard.domain.com #optional\n- SERVERPORT=51820 #optional\n- PEERS=1 #optional\n- PEERDNS=auto #optional\n- INTERNAL_SUBNET=10.13.13.0 #optional\n- ALLOWEDIPS=0.0.0.0/0 #optional\n- LOG_CONFS=true #optional\nvolumes:\n- /path/to/appdata/config:/config\n- /lib/modules:/lib/modules #optional\nports:\n- 51820:51820/udp\nsysctls:\n- net.ipv4.conf.all.src_valid_mark=1\nrestart: unless-stopped\n
      "},{"location":"images/docker-wireguard/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=wireguard \\\n--cap-add=NET_ADMIN \\\n--cap-add=SYS_MODULE \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-e SERVERURL=wireguard.domain.com `#optional` \\\n-e SERVERPORT=51820 `#optional` \\\n-e PEERS=1 `#optional` \\\n-e PEERDNS=auto `#optional` \\\n-e INTERNAL_SUBNET=10.13.13.0 `#optional` \\\n-e ALLOWEDIPS=0.0.0.0/0 `#optional` \\\n-e LOG_CONFS=true `#optional` \\\n-p 51820:51820/udp \\\n-v /path/to/appdata/config:/config \\\n-v /lib/modules:/lib/modules `#optional` \\\n--sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" \\\n--restart unless-stopped \\\nlscr.io/linuxserver/wireguard:latest\n
      "},{"location":"images/docker-wireguard/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-wireguard/#ports-p","title":"Ports (-p)","text":"Parameter Function 51820/udp wireguard port"},{"location":"images/docker-wireguard/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London SERVERURL=wireguard.domain.com External IP or domain name for docker host. Used in server mode. If set to auto, the container will try to determine and set the external IP automatically SERVERPORT=51820 External port for docker host. Used in server mode. PEERS=1 Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet (alphanumeric only) PEERDNS=auto DNS server set in peer/client configs (can be set as 8.8.8.8). Used in server mode. Defaults to auto, which uses wireguard docker host's DNS via included CoreDNS forward. INTERNAL_SUBNET=10.13.13.0 Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode. ALLOWEDIPS=0.0.0.0/0 The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1. LOG_CONFS=true Generated QR codes will be displayed in the docker log. Set to false to skip log output."},{"location":"images/docker-wireguard/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /lib/modules Maps host's modules folder. Only required if compiling wireguard modules."},{"location":"images/docker-wireguard/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --sysctl= Required for client mode."},{"location":"images/docker-wireguard/#portainer-notice","title":"Portainer notice","text":"

      {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

      "},{"location":"images/docker-wireguard/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-wireguard/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-wireguard/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-wireguard/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-wireguard/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it wireguard /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f wireguard
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireguard
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireguard:latest
      "},{"location":"images/docker-wireguard/#versions","title":"Versions","text":"
      • 26.10.22: - Better handle unsupported peer names. Improve logging.
      • 12.10.22: - Add Alpine branch. Optimize wg and coredns services.
      • 09.10.22: - Switch back to iptables-legacy due to issues on some hosts.
      • 04.10.22: - Rebase to Jammy. Upgrade to s6v3.
      • 16.05.22: - Improve NAT handling in server mode when multiple ethernet devices are present.
      • 23.04.22: - Add pre-shared key support. Automatically added to all new peer confs generated, existing ones are left without to ensure no breaking changes.
      • 10.04.22: - Rebase to Ubuntu Focal. Add LOG_CONFS env var. Remove deprecated add-peer command.
      • 28.10.21: - Add site-to-site vpn support.
      • 11.02.21: - Fix bug related to changing internal subnet and named peer confs not updating.
      • 06.10.20: - Disable CoreDNS in client mode, or if port 53 is already in use in server mode.
      • 04.10.20: - Allow to specify a list of names as PEERS and add ALLOWEDIPS environment variable. Also, add peer name/id to each one of the peer sections in wg0.conf. Important: Existing users need to delete /config/templates/peer.conf and restart
      • 27.09.20: - Cleaning service binding example to have accurate PreDown script.
      • 06.08.20: - Replace resolvconf with openresolv due to dns issues when a client based on this image is connected to a server also based on this image. Add IPv6 info to readme. Display kernel version in logs.
      • 29.07.20: - Update Coredns config to detect dns loops (existing users need to delete /config/coredns/Corefile and restart).
      • 27.07.20: - Update Coredns config to prevent issues with non-user-defined bridge networks (existing users need to delete /config/coredns/Corefile and restart).
      • 05.07.20: - Add Debian updates and security repos for headers.
      • 25.06.20: - Simplify module tests, prevent iptables issues from resulting in false negatives.
      • 19.06.20: - Add support for Ubuntu Focal (20.04) kernels. Compile wireguard tools and kernel module instead of using the ubuntu packages. Make module install optional. Improve verbosity in logs.
      • 29.05.20: - Add support for 64bit raspbian.
      • 28.04.20: - Add Buster/Stretch backports repos for Debian. Tested with OMV 5 and OMV 4 (on kernel 4.19.0-0.bpo.8-amd64).
      • 20.04.20: - Fix typo in client mode conf existence check.
      • 13.04.20: - Fix bug that forced conf recreation on every start.
      • 08.04.20: - Add arm32/64 builds and enable multi-arch (rpi4 with ubuntu and raspbian buster tested). Add CoreDNS for PEERDNS=auto setting. Update the add-peer/show-peer scripts to utilize the templates and the INTERNAL_SUBNET var (previously missed, oops).
      • 05.04.20: - Add INTERNAL_SUBNET variable to prevent subnet clashes. Add templates for server and peer confs.
      • 01.04.20: - Add show-peer script and include info on host installed headers.
      • 31.03.20: - Initial Release.
      "},{"location":"images/docker-wireshark/","title":"wireshark","text":""},{"location":"images/docker-wireshark/#linuxserverwireshark","title":"linuxserver/wireshark","text":"

      Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.

      "},{"location":"images/docker-wireshark/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/wireshark:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-wireshark/#application-setup","title":"Application Setup","text":"

      The application can be accessed at:

      • http://yourhost:3000/

      By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link:

      • http://yourhost:3000/?login=true

      In order to dump from an interface you will need to pass NET_ADMIN at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from.

      If you do not specificy host networking you will need to map port 3000 with -p 3000:3000.

      "},{"location":"images/docker-wireshark/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-wireshark/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nwireshark:\nimage: lscr.io/linuxserver/wireshark:latest\ncontainer_name: wireshark\ncap_add:\n- NET_ADMIN\nsecurity_opt:\n- seccomp:unconfined #optional\nnetwork_mode: host\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- /path/to/config:/config\nports:\n- 3000:3000 #optional\nrestart: unless-stopped\n
      "},{"location":"images/docker-wireshark/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=wireshark \\\n--net=host \\\n--cap-add=NET_ADMIN \\\n--security-opt seccomp=unconfined `#optional` \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 3000:3000 `#optional` \\\n-v /path/to/config:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/wireshark:latest\n
      "},{"location":"images/docker-wireshark/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-wireshark/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic."},{"location":"images/docker-wireshark/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Use Host Networking"},{"location":"images/docker-wireshark/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-wireshark/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-wireshark/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker."},{"location":"images/docker-wireshark/#portainer-notice","title":"Portainer notice","text":"

      {% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

      "},{"location":"images/docker-wireshark/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-wireshark/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-wireshark/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-wireshark/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-wireshark/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it wireshark /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f wireshark
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireshark
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireshark:latest
      "},{"location":"images/docker-wireshark/#versions","title":"Versions","text":"
      • 23.10.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 14.02.22: - Rebase to Alpine.
      • 31.03.20: - Initial release.
      "},{"location":"images/docker-xbackbone/","title":"xbackbone","text":""},{"location":"images/docker-xbackbone/#linuxserverxbackbone","title":"linuxserver/xbackbone","text":"

      Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.

      "},{"location":"images/docker-xbackbone/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/xbackbone:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-xbackbone/#application-setup","title":"Application Setup","text":"

      Access the WebUI at \\:80/443. Follow the installation wizard. For more information, check out XBackBone.

      If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini

      Example:

        upload_max_filesize = 25M\npost_max_size = 25M\n

      For reverse proxying, remember to change the base_url in /config/www/xbackbone/config.php to your domain if you initially set up the application with a local url. E.g. 'base_url' => 'https://images.yourdomain.com',

      "},{"location":"images/docker-xbackbone/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-xbackbone/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nxbackbone:\nimage: lscr.io/linuxserver/xbackbone:latest\ncontainer_name: xbackbone\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/Oslo\nvolumes:\n- /path/to/data:/config\nports:\n- 80:80\n- 443:443\nrestart: unless-stopped\n
      "},{"location":"images/docker-xbackbone/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=xbackbone \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/Oslo \\\n-p 80:80 \\\n-p 443:443 \\\n-v /path/to/data:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/xbackbone:latest\n
      "},{"location":"images/docker-xbackbone/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-xbackbone/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-xbackbone/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/Oslo Timezone (i.e., Europe/Oslo)"},{"location":"images/docker-xbackbone/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config config directory volume mapping"},{"location":"images/docker-xbackbone/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-xbackbone/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-xbackbone/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-xbackbone/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-xbackbone/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-xbackbone/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it xbackbone /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f xbackbone
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' xbackbone
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/xbackbone:latest
      "},{"location":"images/docker-xbackbone/#versions","title":"Versions","text":"
      • 04.11.22: - Rebase to Alpine 3.16, migrate to s6v3.
      • 01.11.22: - Move application install to /app/www/public, add migration notices for existing users. Container updates should now update the application correctly
      • 20.08.22: - Rebasing to alpine 3.15 with php8. Restructure nginx configs (see changes announcement).
      • 02.08.22: - Added note about updating.
      • 06.06.21: - Initial Release.
      "},{"location":"images/docker-yq/","title":"yq","text":"

      The LinuxServer.io team brings you another container release featuring:

      • regular and timely application updates
      • easy user mappings (PGID, PUID)
      • custom base image with s6 overlay
      • weekly base OS updates with common layers across the entire LinuxServer.io ecosystem to minimise space usage, down time and bandwidth
      • regular security updates

      Find us at: * Blog - all the things you can do with our containers including How-To guides, opinions and much more! * Discord - realtime support / chat with the community and the team. * Discourse - post on our community forum. * Fleet - an online web interface which displays all of our maintained images. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget

      "},{"location":"images/docker-yq/#linuxserveryq","title":"linuxserver/yq","text":"

      yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq, jq, and xq.

      "},{"location":"images/docker-yq/#supported-architectures","title":"Supported Architectures","text":"

      Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling linuxserver/yq should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"images/docker-yq/#usage","title":"Usage","text":""},{"location":"images/docker-yq/#docker-cli","title":"Docker cli","text":"

      docker run --rm \\\n  -v \"$PWD:$PWD\" \\\n  -w=\"$PWD\" \\\n  --entrypoint yq \\\n  linuxserver/yq \\\n  .foo.bar input.yml\n
      You can replace the last line with any yq command and argument, which will be passed to yq inside the image.

      docker run --rm \\\n  -v \"$PWD:$PWD\" \\\n  -w=\"$PWD\" \\\n  --entrypoint jq \\\n  linuxserver/yq \\\n  .foo.bar input.json\n
      You can replace the last line with any jq command and argument, which will be passed to jq inside the image.

      docker run --rm \\\n  -v \"$PWD:$PWD\" \\\n  -w=\"$PWD\" \\\n  --entrypoint xq \\\n  linuxserver/yq \\\n  .foo.bar input.xml\n
      You can replace the last line with any xq command and argument, which will be passed to xq inside the image.

      "},{"location":"images/docker-yq/#recommended-method","title":"Recommended method","text":"

      We provide a very convenient script that allows the yq container to run as if it was installed natively:

      sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-yq.sh -o /usr/local/bin/yq\nsudo chmod +x /usr/local/bin/yq\n
      Running these two commands on your docker host once will let you issue commands such as yq .foo.bar input.yml and the yq container will do its job behind the scenes.

      sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-jq.sh -o /usr/local/bin/jq\nsudo chmod +x /usr/local/bin/jq\n
      Running these two commands on your docker host once will let you issue commands such as jq .foo.bar input.json and the jq container will do its job behind the scenes.

      sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-xq.sh -o /usr/local/bin/xq\nsudo chmod +x /usr/local/bin/xq\n
      Running these two commands on your docker host once will let you issue commands such as xq .foo.bar input.xml and the xq container will do its job behind the scenes.

      "},{"location":"images/docker-yq/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.

      "},{"location":"images/docker-yq/#support-info","title":"Support Info","text":"
      • image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/yq
      "},{"location":"images/docker-yq/#updating-info","title":"Updating Info","text":""},{"location":"images/docker-yq/#via-docker-cli","title":"Via Docker Cli","text":"
      • Update the image: docker pull linuxserver/yq
      • You can also remove the old dangling images: docker image prune
      "},{"location":"images/docker-yq/#building-locally","title":"Building locally","text":"

      If you want to make local modifications to these images for development purposes or just to customize the logic:

      git clone https://github.com/linuxserver/docker-yq.git\ncd docker-yq\ndocker build \\\n  --no-cache \\\n  --pull \\\n  -t linuxserver/yq:latest .\n

      The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

      docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

      Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

      "},{"location":"images/docker-yq/#versions","title":"Versions","text":"
      • 19.09.22: - Rebase to 3.17.
      • 19.09.22: - Rebase to 3.15.
      • 18.05.21: - Rebase to 3.13. add linuxserver wheel repo.
      • 09.10.20: - Fix run scripts evaluating $ in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands.
      • 07.10.20: - Initial Release.
      "},{"location":"images/docker-znc/","title":"znc","text":""},{"location":"images/docker-znc/#linuxserverznc","title":"linuxserver/znc","text":"

      Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.

      "},{"location":"images/docker-znc/#supported-architectures","title":"Supported Architectures","text":"

      We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

      Simply pulling lscr.io/linuxserver/znc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

      The architectures supported by this image are:

      Architecture Available Tag x86-64 \u2705 amd64-\\<version tag> arm64 \u2705 arm64v8-\\<version tag> armhf \u2705 arm32v7-\\<version tag>"},{"location":"images/docker-znc/#application-setup","title":"Application Setup","text":"

      To log in to the application, browse to http://:6501.

      • Default User: admin
      • Default Password: admin change password ASAP.
      "},{"location":"images/docker-znc/#usage","title":"Usage","text":"

      To help you get started creating a container from this image you can either use docker-compose or the docker cli.

      "},{"location":"images/docker-znc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
      ---\nversion: \"2.1\"\nservices:\nznc:\nimage: lscr.io/linuxserver/znc:latest\ncontainer_name: znc\nenvironment:\n- PUID=1000\n- PGID=1000\n- TZ=Europe/London\nvolumes:\n- <path to data>:/config\nports:\n- 6501:6501\nrestart: unless-stopped\n
      "},{"location":"images/docker-znc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
      docker run -d \\\n--name=znc \\\n-e PUID=1000 \\\n-e PGID=1000 \\\n-e TZ=Europe/London \\\n-p 6501:6501 \\\n-v <path to data>:/config \\\n--restart unless-stopped \\\nlscr.io/linuxserver/znc:latest\n
      "},{"location":"images/docker-znc/#parameters","title":"Parameters","text":"

      Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

      "},{"location":"images/docker-znc/#ports-p","title":"Ports (-p)","text":"Parameter Function 6501 Port ZNC listens on."},{"location":"images/docker-znc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"images/docker-znc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where local ZNC data is stored."},{"location":"images/docker-znc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-znc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

      You can set any environment variable from a file by using a special prepend FILE__.

      As an example:

      -e FILE__PASSWORD=/run/secrets/mysecretpassword\n

      Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

      "},{"location":"images/docker-znc/#umask-for-running-applications","title":"Umask for running applications","text":"

      For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 setting. Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up here before asking for support.

      "},{"location":"images/docker-znc/#user-group-identifiers","title":"User / Group Identifiers","text":"

      When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

      Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

      In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

        $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
      "},{"location":"images/docker-znc/#docker-mods","title":"Docker Mods","text":"

      We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if any) as well as universal mods that can be applied to any one of our images can be accessed via the dynamic badges above.

      "},{"location":"images/docker-znc/#support-info","title":"Support Info","text":"
      • Shell access whilst the container is running:
      • docker exec -it znc /bin/bash
      • To monitor the logs of the container in realtime:
      • docker logs -f znc
      • Container version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' znc
      • Image version number
      • docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/znc:latest
      "},{"location":"images/docker-znc/#versions","title":"Versions","text":"
      • 19.01.22: - Rebasing to alpine 3.15.
      • 01.06.20: - Rebasing to alpine 3.12.
      • 19.12.19: - Rebasing to alpine 3.11.
      • 02.11.19: - Add znc-palaver module.
      • 28.06.19: - Rebasing to alpine 3.10.
      • 23.03.19: - Switching to new Base images, shift to arm32v7 tag.
      • 22.02.19: - Rebasing to alpine 3.9.
      • 31.01.19: - Add pipeline logic and multi arch.
      • 30.01.19: - Add push and clientbuffer modules.
      • 17.08.18: - Rebase to alpine 3.8, use buildstage.
      • 03.01.18: - Deprecate cpu_core routine lack of scaling.
      • 07.12.17: - Rebase alpine linux 3.7.
      • 25.10.17: - Remove debug switch from run command.
      • 26.05.17: - Rebase alpine linux 3.6.
      • 06.02.17: - Rebase alpine linux 3.5.
      • 19.01.17: - Add playback module.
      • 07.01.17: - Add ca-certificates package, resolve sasl issues.
      • 07.12.16: - Use scanelf to determine runtime dependencies. Fix error with continuation.
      • 14.10.16: - Add version layer information.
      • 30.09.16: - Fix umask.
      • 11.09.16: - Add layer badges to README.
      • 28.08.16: - Add badges to README.
      • 20.08.16: - Rebase to alpine linux, move to main repository.
      • 11.12.15: - Initial Release.
      "},{"location":"misc/finances/","title":"Finances","text":"
      • v0.1 Beta (Work in progress)
      • Created 2021-08-18
      • Updated 2021-08-18
      "},{"location":"misc/finances/#charter","title":"Charter","text":"

      We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.

      "},{"location":"misc/finances/#annual-expenses","title":"Annual Expenses","text":"
      • DigitalOcean yearly costs (currently paid for) $1200
      • AWS ~$200
      • Contabo hosting $287.76
      • Email Hosting $20
      • Various domains ~$150
      • Docker Pro Plan $60
      • Various licenses ~$150
      "},{"location":"misc/finances/#votes","title":"Votes","text":"

      In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A generasl consensus will need to be reached in order for it to proceed.

      "},{"location":"misc/finances/#acceptable-uses-of-money","title":"Acceptable uses of money","text":"
      • Hardware/Software needed to help the group reach a specific goal
      • Stationary + Related items for possible Conventions
      • Convention Fees (Both Attendence and Travel)
      • Hosting services (Included domain purchases)
      • Good will gestures (Example: For users outside the group that have provided help when asked)
      • Food/Drink for LinuxServer.io focused sprints.
      • Donations to upstream projects
      "},{"location":"misc/finances/#links","title":"Links","text":"
      • https://opencollective.com/linuxserver#category-BUDGET
      "}]} \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 2f2441be3fc413b7f3558fb34e435c8a88b1e2c9..33a90b5b10dc8e0aee715b8dbda40eea28f66d49 100644 GIT binary patch delta 15 WcmeC->EU6M@8;mpGTz9>#s&Z!O#=}C delta 15 WcmeC->EU6M@8;m(*4xO&#s&ZzdIIeL